2016-12-09 65 views
-1

我在RStudio中有一个Shiny应用程序,它与从mysql数据库中检索的数据一起工作。R Shiny-mysql连接不能从server.R工作(从其他文件中工作)

与mysql和查询的连接位于应用程序之外的文件中,因此我可以创建数据框。

但是,当我将连接复制到MySQL和sql查询到Shiny应用程序的server.R时,应用程序跳过查询并给出数据框不存在的错误(Error : object 'tickets' not found)。

因此,mysql查询从server.R以外的作品,但不是从server.R。我究竟做错了什么?

这里是我的server.R和ui.R样本:

server.R

library(shiny) 
library(RMySQL) 
library(ggplot2) 
#library(ggiraph) 
library(lubridate) 

##Connect to Redmine db 
con <- dbConnect(MySQL(), 
       user = '#', 
       password = '#', 
       host = '#', 
       dbname='#') 

tickets<-dbGetQuery(con, "Select * from table") 
issues_speed_unique<-unique(na.omit(dbGetQuery(con,"Select * from table2"))) 
dbDisconnect (con) 

some aggregations.... 

shinyServer(
    function(input,output){ 
    output$tickets_week<-renderPlot(
      ggplot(data = subset(tickets, 

ui.R

library(shiny) 
library(ggplot2) 
#library(ggiraph) 
#library(htmltools) 
library(lubridate) 

shinyUI(fluidPage( 
+0

如果加上'打印(门票)'查询下,并运行应用程序,并在数据帧打印到控制台? – Pete900

+0

@ Pete900对不起,回复迟了。不,不显示。它似乎直接跳到什么'shinyServer( 函数(输入,输出){'。 – adlisval

+0

当你通过浏览器启动应用程序相比,只是在RStudio运行? – Pete900

回答

0

问题ui.R已运行之前server.R,当然数据丢失(因为数据在server.R查询 - 因此错误)。

解决方案是把代码,无论是从server.Rui.R,在一个文件,叫做app.R。所以,在app.R我写的代码如下顺序:

  1. 负载封装(library(packagename))代码
  2. 使连接和查询码
  3. 服务器代码
  4. UI代码
  5. 使用完成代码:shinyApp(ui = ui, server = server)

更多闪亮在一个单一的文件 - app.R文件:http://shiny.rstudio.com/articles/single-file.html

相关问题