R Shiny - mysql连接不能从server.R工作(从其他文件工作)

时间:2016-12-09 13:55:36

标签: mysql r shiny rstudio shiny-server

我在RStudio中有一个Shiny应用程序,它可以处理从mysql数据库中检索的数据。

与mysql的连接和查询都在应用程序外的文件中,因此我可以创建数据帧。

但是当我将连接复制到mysql并将sql查询复制到Shiny应用程序的server.R时,应用程序会跳过查询并发出数据帧不存在的错误(Error : object 'tickets' not found)。< / p>

因此,mysql查询可以在server.R之外进行,但不能从server.R进行。我做错了什么?

这是我的服务器示例.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(  

1 个答案:

答案 0 :(得分:1)

问题ui.Rserver.R之前运行,当然数据丢失了(因为数据在{中查询} {1}} - 因此错误)。

解决方案是将server.Rserver.R的代码放在一个名为ui.R的文件中。所以,在app.R中,我按以下顺序编写了代码:

  1. 加载包(app.R)代码
  2. 建立连接和查询代码
  3. 服务器代码
  4. ui 代码
  5. 使用以下代码完成代码:library(packagename)
  6. 有关单个文件中的Shiny的更多信息 - shinyApp(ui = ui, server = server)文件:http://shiny.rstudio.com/articles/single-file.html