RStudio错误mysqlNewConnection最多16个连接

RStudio错误mysqlNewConnection最多16个连接,mysql,r,shiny,Mysql,R,Shiny,我有一个闪亮的服务器运行,连接到一个MySQL数据库。到目前为止工作正常的页面现在给了我以下错误: Error in mysqlNewConnection(drv, ...) : RS-DBI driver: (cannot allocate a new connection -- maximum of 16 connections already opened) 这让我想知道我应该如何处理交互式网页中打开的mysql连接 首先,dbConnect(MySQL(),…)语句应该在shinyS

我有一个闪亮的服务器运行,连接到一个MySQL数据库。到目前为止工作正常的页面现在给了我以下错误:

Error in mysqlNewConnection(drv, ...) : RS-DBI driver: 
(cannot allocate a new connection -- maximum of 16 connections already opened)
这让我想知道我应该如何处理交互式网页中打开的mysql连接

首先,
dbConnect(MySQL(),…)
语句应该在
shinyServer
方法之前还是内部

如果我在
server.R
的末尾添加了
dbDisconnect(dbcon)
,那么我会从页面中得到一个
错误:过期的MysqLConnection
错误,并且不会显示任何数据

我在
shinyServer
方法内部或之前也尝试过:

 on.exit(dbDisconnect(dbcon), add=TRUE)

因此,页面本身的代码只在我保持连接打开的情况下对我有效,我想这会导致上面的最大连接错误


如何在Shiny中处理这些情况?

您可以在
global.R
文件或
shinyServer
外部设置连接,例如:

库(RMySQL)

getConnection在反应式函数中,连接、获取数据并断开连接。因此,当发生事件时,将调用此函数(它使用延迟加载机制)。我就是这样配置的,不确定这是不是一个好方法。如果我把它放在
shinyServer
之外,它似乎可以工作,尽管我想没有办法知道有多少连接仍然保持打开状态。它只有一个连接
global.R
shinyServer
之外的内容都是跨客户端的
 on.exit(dbDisconnect(dbcon))
library(RMySQL)

getConnection <- function(group) {

  if (!exists('.connection', where=.GlobalEnv)) {
    .connection <<- dbConnect(MySQL(), group=group)
  } else if (class(try(dbGetQuery(.connection, "SELECT 1"))) == "try-error") {
    dbDisconnect(.connection)
    .connection <<- dbConnect(MySQL(), group=group)
  }

  return(.connection)
}