Внутренняя функция RMySQL dbGetQuery() оставляет ожидающие результаты

Моя функция, содержащаяся в более крупной функции, использует dbConnect(), dbGetQuery() и dbDisconnect().

Когда функция выходит из строя, я исправляю ее и пытаюсь перезапустить. Я не могу запустить его повторно, потому что получаю: Error in mysqlCloseConnection(conn, ...) : connection has pending rows (close open results set first)

(Примечание 1: я не использую dbSendQuery() + fetch(), только dbGetQuery(), так что это сама по себе странная ошибка.)
(Примечание 2: ошибки НЕ возникают в коде RMySQL; они возникают в других частях R код.)

Неудачное решение 1: dbClearResult(dbListResults(myconnection)[[1]]) не работает, потому что myconnection было создано внутри среды функции.

Неудачное решение 2: lapply( dbListConnections( dbDriver( drv = "MySQL")), dbDisconnect) ошибок с тем же сообщением об ошибке «ожидающие строки», что и выше.

Мое единственное решение сейчас - убить R и начать все сначала. Однако я знаю, что соединение все еще существует в базе данных SQL (потому что мой босс сказал мне об этом), поэтому я ищу правильное решение, чтобы закрыть результат/соединение.

Спасибо за любую помощь.


person StatSandwich    schedule 02.04.2014    source источник
comment
Вы пробовали комбинацию неудачных решений 1 и 2, то есть: lapply( dbListConnections( dbDriver( drv = "MySQL")), function(con) dbClearResult(dbListResults(con)[[1]]))   -  person Alex    schedule 04.07.2014


Ответы (1)


У меня была аналогичная проблема, так что это может помочь другим людям в будущем...

pull<- dbSendQuery(con, statement...)
df2 <- fetch(pull, n = -1)
> dbHasCompleted(pull)
[1] TRUE
> dbDisconnect(con)
[1] TRUE
person MLavoie    schedule 15.12.2015