【问题标题】:RMySQL dbGetQuery() inside function leaves pending results函数内部的 RMySQL dbGetQuery() 留下未决结果
【发布时间】:2014-04-02 00:20:12
【问题描述】:

我的函数包含在一个更大的函数中,使用dbConnect()dbGetQuery()dbDisconnect()

当函数出错时,我修复它并尝试重新运行它。我无法重新运行它,因为我得到: Error in mysqlCloseConnection(conn, ...) : connection has pending rows (close open results set first)

(注1:我没有使用dbSendQuery() + fetch(),只是dbGetQuery(),所以这本身就是一个奇怪的错误。)
(注意2:错误不会出现在RMySQL代码中;它们会出现在R代码的其他部分。)

失败的解决方案1:dbClearResult(dbListResults(myconnection)[[1]])不起作用,因为myconnection是在函数环境中创建的。

失败的解决方案 2:lapply( dbListConnections( dbDriver( drv = "MySQL")), dbDisconnect) 错误输出与上面相同的“待处理行”错误消息。

我现在唯一的解决方案是杀死 R 并重新开始。但是,我知道 SQL 数据库中仍然存在连接(因为我的老板告诉我这样),所以我正在寻找一个适当的解决方案来关闭结果/连接。

感谢您的帮助。

【问题讨论】:

  • 您是否尝试过失败的解决方案1和2的组合,即:lapply( dbListConnections( dbDriver( drv = "MySQL")), function(con) dbClearResult(dbListResults(con)[[1]]))

标签: r rmysql


【解决方案1】:

我有类似的问题,所以它可能会在未来帮助其他人......

pull<- dbSendQuery(con, statement...)
df2 <- fetch(pull, n = -1)
> dbHasCompleted(pull)
[1] TRUE
> dbDisconnect(con)
[1] TRUE

【讨论】:

    猜你喜欢
    • 2013-12-03
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-09
    • 2020-12-28
    • 1970-01-01
    相关资源
    最近更新 更多