我用RMySQL导入数据库,有时当我尝试关闭连接,我收到以下错误:如何关闭RMySQL中的结果集?
Error in mysqlCloseConnection(conn, ...) :
connection has pending rows (close open results set first)
我有比重新启动计算机纠正这个其他的没有其他办法,我能做什么使解决这个?谢谢!
我用RMySQL导入数据库,有时当我尝试关闭连接,我收到以下错误:如何关闭RMySQL中的结果集?
Error in mysqlCloseConnection(conn, ...) :
connection has pending rows (close open results set first)
我有比重新启动计算机纠正这个其他的没有其他办法,我能做什么使解决这个?谢谢!
我们可以使用dbClearResult方法。
例子:
dbClearResult(dbListResults(conn)[[1]])
您需要在关闭连接之前关闭结果集。 如果在关闭具有挂起行的结果集之前尝试关闭连接,有时会导致挂起计算机。
我对rmysql了解不多,但尝试先关闭结果集。
正如Multiplexer指出的那样,您可能会因为遗留部分结果集而导致错误。
DBI和像RMySQL这样的存取程序包都有文档,有时候有点难度。我尽量提醒自己使用dbGetQuery()
,它一次抓取整个结果集。以下是来自CRANberries代码的一小段代码:
sql <- paste("select count(*) from packages ",
"where package='", curPkg, "' ",
"and version='", curVer, "';", sep="")
nb <- dbGetQuery(dbcon, sql)
之后我可以关闭而不用担心(或执行其他操作)。
我显然一直在做这个不是靠设计,而是靠运气。它是什么命令不会返回所有结果,而是使结果集保持打开状态? – 2010-11-03 16:08:08
*例如''dbSendQuery()'后跟'fetch()'具有固定数量的行。 – 2010-11-03 16:22:23
我每天都会做德克的工作,而且工作得很好。 – Maiasaura 2010-11-04 15:19:28
rs<- dbGetQuery(dbcon, sql)
data<-dbFetch(rs)
dbClearResult(rs)
最后一行继续查询
Error in .local(conn, statement, ...) :
connection with pending rows, close resultSet before continuing
你必须要记住的结果的为自己设定时删除了以下错误。在下面的示例中,您将了解如何关闭/清除结果以及如何获取受影响的行。要解决您的问题,请在变量上使用最后一行代码,该代码从您发出的任何语句或查询中获取结果。 :)
statementRes <- DBI::dbSendStatement(conn = db,
"CREATE TABLE IF NOT EXISTS great_dupa_test (
taxonomy_id INTERGER NOT NULL,
scientific_name TEXT);")
DBI::dbGetRowsAffected(statementRes)
DBI::dbClearResult(statementRes)
由于在Dirks文章中解释的原因而下降了:如果你有挂起的行,你可能做了一个'dbSendQuery(”SELECT ... “)'没有获取所有的结果,这可能不是你想要的。除非你有特定的理由不要,否则总是在SELECT语句中使用'dbGetQuery'。 – Backlin 2017-01-04 15:20:14