所以我在开始时连接到我的数据库就好了:
con <- dbConnect(
MySQL(),
user = "username", password = "password",
host = "<my amazon web service database server>",
port = 3306
)
所以一切正常,但在我的Shiny应用程序运行/刷新几次后,它说我打开了16个连接,我无法打开任何连接.
所以,我试着跑:
dbDisconnect(dbListConnections(MySQL()))
然后我得到了这个:
dbListConnections(MySQL())
[[1]]TRUE
然后我收到了这个错误:
Error in .local(dbObj, ...) :
internal error in RS_DBI_getConnection: corrupt connection handle
现在,每当我尝试打开我的Shiny应用程序时,我都会在datatableoutput上得到错误
(I query the database to generate this output):
internal error in RS_DBI_getConnection: corrupt connection handle
最佳答案 我刚才有同样的问题.这就是我解决它的方式:
我正在创建一个连接,然后是一些使用该连接的函数.问题是,连接在外部范围内:
con <- dbConnect(
MySQL(),
...
)
MyFunction <- function(){
myQuery <- paste("SELECT * FROM ...")
df <- dbGetQuery(con, myQuery)
df
}
对我来说,这也工作得很好,但在“16”连接限制之后停止工作,就像你的情况一样(同样的损坏的连接句柄错误).
解决方法
在函数内部创建连接并在函数末尾断开连接:
MyFunction <- function(){
con <- dbConnect(
MySQL(),
...
)
myQuery <- paste("SELECT * FROM ...")
df <- dbGetQuery(con, myQuery)
dbDisconnect(con)
df
}
现在一切似乎都在起作用.