我有一个Shiny应用程序(托管在shinyapps.io上),用于记录用户对某个actionButtons到MySQL数据库的点击。我在一些事情上喜欢一些建议:
dbConnect
代码的位置(即shinyServer
函数内部或外部)每次添加数据库都会添加一个新行,因此用户无法访问和修改相同的元素。我问这个的原因是我遇到了多个用户无法同时使用该应用程序的问题(错误"与服务器断开连接")我不确定是否来自MySQL连接。
谢谢!
答案 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
}
我添加了poolCheckout
和poolReturn
以成功运行并防止泄漏。