Я не подключены к базе данных MySQL с помощью пакета RMySQL, используя это заявление:Как проверить, сохраняется ли соединение с MySql через RMySql?
con<-dbConnect(drv=RMySQL::MySQL(max.con=1,fetch.default.rec=500),host="host",dbname="dbname",password="psswd",user="user"))
До сих пор никаких проблем. Когда я проверяю:
>class(con)
[1] "MySQLConnection"
attr(,"package")
[1] "RMySQL"
Через час я использовал следующее заявление:
dbGetQuery(conn=con,"show tables")
и я получил ошибку:
Error in .local(dbObj, ...) :
internal error in RS_DBI_getConnection: corrupt connection handle
Однако, если я проверить это утверждение:
dbListConnections(drv=RMySQL::MySQL())
Он дает:
[[1]]
<MySQLConnection:0,21>
Когда я пытаюсь:
dbDisconnect(conn=con)
я получаю ту же ошибку:
Error in .local(dbObj, ...) :
internal error in RS_DBI_getConnection: corrupt connection handle
Затем я удалил объект соединения:
rm(con)
Когда я попытался подключиться снова используя dbConnect(), я получил эту ошибку:
con<-dbConnect(drv=RMySQL::MySQL(max.con=1,fetch.default.rec=500),host="host",dbname="dbname",password="psswd",user="user"))
Error in .local(drv, ...): Cannot allocate a new connection: 1 connections already opened
Я знаю, что вызов dbListConnections() возвращает пустой список, когда нет соединения с базой данных. Но в этом случае не возвращается пустой список.
ли повредиться соединение обрабатывать различные состояния соединения, чем отключенного состояния?
OR
Соединение имеет временные ограничения?
Каков наилучший подход, чтобы проверить, работает ли соединение с БД?
Сохранение связи для этого долгое время является очень ОЧЕНЬ серьезной ошибкой. Вы должны закрыть соединение, как только закончите использовать его.Причина в том, что любые транзакции, блокировки, которые были приобретены при открытии соединения, сохраняются до закрытия, что приводит к серьезной деградации производительности. Просто закройте соединение и откройте его * ТОЛЬКО * при необходимости –
Иными словами, если вы сделали это в базе данных, используемой другими, вы получили бы срочный телефонный звонок от администраторов баз данных –
@PanagiotisKanavos Okay. Спасибо, что указали на ошибку. Поэтому я должен предположить, что это ошибка реализации с моей стороны, а не проблема с пакетом? – TUSHAr