函数中的RMySQL dbGetQuery()保留挂起的结果
我的函数包含在一个较大的函数中,它使用函数中的RMySQL dbGetQuery()保留挂起的结果,r,rmysql,R,Rmysql,我的函数包含在一个较大的函数中,它使用dbConnect()、dbGetQuery()和dbDisconnect() 当函数出错时,我修复它并尝试重新运行它。但我无法重新运行它,因为我得到: mysqlCloseConnection(conn,…)中的错误: 连接有挂起的行(先关闭打开的结果集) (注意1:我没有使用dbSendQuery()+fetch(),只是使用dbGetQuery(),所以这本身就是一个奇怪的错误。) (注2:错误不会出现在RMySQL代码中;它们出现在R代码的其他部分。
dbConnect()
、dbGetQuery()
和dbDisconnect()
当函数出错时,我修复它并尝试重新运行它。但我无法重新运行它,因为我得到:
mysqlCloseConnection(conn,…)中的错误:
连接有挂起的行(先关闭打开的结果集)
(注意1:我没有使用dbSendQuery()
+fetch()
,只是使用dbGetQuery()
,所以这本身就是一个奇怪的错误。)(注2:错误不会出现在
RMySQL
代码中;它们出现在R代码的其他部分。)
失败的解决方案1:dbClearResult(dbListResults(myconnection)[[1]])
不起作用,因为myconnection
是在函数环境中创建的
解决方案2失败:lappy(dbListConnections(dbDriver(drv=“MySQL”)),dbDisconnect)
errors out,上面显示了相同的“挂起的行”错误消息
我现在唯一的解决办法就是杀死R,重新开始。但是,我知道SQL数据库中仍然存在连接(因为我的老板告诉我这样做),所以我正在寻找一个合适的解决方案来关闭结果/连接
谢谢你的帮助。我也遇到了类似的问题,所以它可能会在将来帮助其他人
pull<- dbSendQuery(con, statement...)
df2 <- fetch(pull, n = -1)
> dbHasCompleted(pull)
[1] TRUE
> dbDisconnect(con)
[1] TRUE
pull-dbDisconnect(con)
[1] 真的
您是否尝试过失败的解决方案1和2的组合,即:lappy(dbListConnections(dbDriver(drv=“MySQL”)、function(con)dbClearResult(dblistconresults(con)[[1]])