我用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