所以我一开始就很好地连接到了我的数据库:
con <- dbConnect(
MySQL(),
user = "username", password = "password",
host = "<my amazon web service database server>",
port = 3306
)
Run Code Online (Sandbox Code Playgroud)
所以一切正常,但在我的 Shiny 应用程序上运行/刷新几次后,它说我有 16 个打开的连接,并且我无法再打开任何连接。
所以,我尝试运行:
dbDisconnect(dbListConnections(MySQL()))
Run Code Online (Sandbox Code Playgroud)
然后我得到了这个:
dbListConnections(MySQL())
[[1]]TRUE
Run Code Online (Sandbox Code Playgroud)
然后我得到这个错误:
Error in .local(dbObj, ...) :
internal error in RS_DBI_getConnection: corrupt connection handle
Run Code Online (Sandbox Code Playgroud)
现在,每当我尝试打开闪亮的应用程序时,我都会在数据表输出上收到错误
(I query the database to generate this output):
internal error in RS_DBI_getConnection: corrupt connection handle
Run Code Online (Sandbox Code Playgroud)
我刚刚遇到了同样的问题。这就是我解决它的方法:
我正在创建一个连接,然后创建一些使用该连接的函数。问题是,连接位于外部范围内:
con <- dbConnect(
MySQL(),
...
)
MyFunction <- function(){
myQuery <- paste("SELECT * FROM ...")
df <- dbGetQuery(con, myQuery)
df
}
Run Code Online (Sandbox Code Playgroud)
对我来说,这也工作得很好,但在“16”连接限制之后停止工作,就像你的情况一样(相同的损坏连接处理错误)。
解决方法
在函数内部创建连接并在函数结束时断开连接:
MyFunction <- function(){
con <- dbConnect(
MySQL(),
...
)
myQuery <- paste("SELECT * FROM ...")
df <- dbGetQuery(con, myQuery)
dbDisconnect(con)
df
}
Run Code Online (Sandbox Code Playgroud)
现在一切似乎都正常。
| 归档时间: |
|
| 查看次数: |
6477 次 |
| 最近记录: |