函数内部的RMySQL dbGetQuery()会保留挂起的结果

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

当函数出错时,我修复它并尝试重新运行它.我不能重新运行它,因为我得到:
 mysqlCloseConnection(conn,…)出错:
  连接有挂起的行(先关闭打开的结果)

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

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

解决方案2失败:lapply(dbListConnections(dbDriver(drv =“MySQL”)),dbDisconnect)错误输出上面有相同的“挂起行”错误消息.

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

谢谢你的帮助.

最佳答案 我有一个类似的问题,所以它可能会帮助其他人…

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