我的函数包含在一个更大的函数中,它使用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