- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个 Shiny 的服务器正在运行,它连接到 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)
,那么我会收到一个 Error: expired MysqLConnection
错误页面,并且不显示任何数据。
我也在 shinyServer
方法内部或之前尝试过这个:
on.exit(dbDisconnect(dbcon), add=TRUE)
或
on.exit(dbDisconnect(dbcon))
因此,页面本身的代码仅在我保持连接打开时才对我有效,我想这可能会导致上述最大连接数错误。
在 Shiny 中如何处理这些情况?
最佳答案
您可以在 global.R
文件中或在 shinyServer
外部设置连接 https://groups.google.com/forum/#!topic/shiny-discuss/0VjQc2a6z3M 中的示例是:
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)
}
这定义了一个函数来检查全局环境中的连接。如果找不到,它会创建一个。如果找到但无法连接,则重新启动连接。没有给出明确的断开连接,所以我猜连接最终会超时。
关于mysql - RStudio Shiny 错误 mysqlNewConnection 最多 16 个连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24649673/
我有一个 Shiny 的服务器正在运行,它连接到 MySQL 数据库。到目前为止工作正常的页面现在给我这个错误: Error in mysqlNewConnection(drv, ...) : RS-
我是一名优秀的程序员,十分优秀!