4

我的函数包含在一个更大的函数中,使用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 数据库中仍然存在连接(因为我的老板告诉我这样),所以我正在寻找一个适当的解决方案来关闭结果/连接。

谢谢你的帮助。

4

1 回答 1

3

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

pull<- dbSendQuery(con, statement...)
df2 <- fetch(pull, n = -1)
> dbHasCompleted(pull)
[1] TRUE
> dbDisconnect(con)
[1] TRUE
于 2015-12-15T19:25:48.043 回答