【发布时间】: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]]))