R Shiny中的多个(同时)用户可以访问MySQL数据库

时间:2016-11-07 18:09:05

标签: mysql r shiny

我有一个Shiny应用程序(托管在shinyapps.io上),用于记录用户对某个actionButtons到MySQL数据库的点击。我在一些事情上喜欢一些建议:

  • 放置dbConnect代码的位置(即shinyServer函数内部或外部)
  • 何时关闭连接(因为我遇到了太多打开连接的问题)

每次添加数据库都会添加一个新行,因此用户无法访问和修改相同的元素。我问这个的原因是我遇到了多个用户无法同时使用该应用程序的问题(错误"与服务器断开连接")我不确定是否来自MySQL连接。

谢谢!

1 个答案:

答案 0 :(得分:2)

有关pool软件包的评论中有人发表了这个文章,其目的非常正确!这是我的server.R代码的相关部分:

library(shiny)
library(RMySQL)
library(pool)

pool <- dbPool(
  drv = RMySQL::MySQL(),
  user='username', 
  password='password', 
  dbname='words', 
  host='blahblahblah')

shinyServer(function(input, output) {
  ## function to write to databse
  writeToDB <- function(word, vote){
    query <- paste("INSERT INTO word_votes (vote, word) VALUES (", vote, ", '", word, "');", sep="")
    conn <- poolCheckout(pool) 
    dbSendQuery(conn, query) 
    conn <- poolReturn(conn)

  ## rest of code
  }

我添加了poolCheckoutpoolReturn以成功运行并防止泄漏。