【问题标题】:RMySQL: internal error in RS_DBI_getConnection: corrupt connection handleRMySQL:RS_DBI_getConnection 中的内部错误:连接句柄损坏
【发布时间】:2016-02-26 09:45:48
【问题描述】:

所以我一开始就很好地连接到了我的数据库:

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 应用程序时,我都会在数据表输出上收到错误

(I query the database to generate this output):
internal error in RS_DBI_getConnection: corrupt connection handle

【问题讨论】:

    标签: r shiny rmysql


    【解决方案1】:

    我也遇到了同样的问题。我就是这样解决的:

    我正在创建一个连接,然后创建了一些使用该连接的功能。问题是,连接在外部范围内:

    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
    }
    

    现在似乎一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-08
      • 1970-01-01
      • 1970-01-01
      • 2016-05-16
      • 2010-09-06
      • 1970-01-01
      相关资源
      最近更新 更多