私はこの文を使用してRMySQLのパッケージを介してMySQLデータベースに接続していない:RMySqlを介してMySqlへの接続が継続するかどうかを確認する方法はありますか?
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)
私は同じエラーを取得:私は接続しようとしたとき
rm(con)
:
Error in .local(dbObj, ...) :
internal error in RS_DBI_getConnection: corrupt connection handle
は、それから私は、接続オブジェクトを削除再度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()呼び出しが空のリストを返すことがわかりました。しかし、この場合、空のリストは返されません。
は破損し、接続が切断された状態より接続の異なる状態を扱いますか?
または
接続がタイムアウトしましたか。
DBへの接続がまだ機能しているかどうかを確認する最良の方法はありますか?
接続を長時間開いておくことは、非常に重大なエラーです。接続が終了するとすぐに接続を閉じる必要があります。その理由は、接続が開いている間に取得されたロックは、閉じられるまで持続するため、パフォーマンスが著しく低下するためです。接続を閉じてそれを開く* ONLY *必要な場合 –
別の言い方をすれば、他の人が使用しているデータベースでこれを行うと、DBA –
@ PanagiotisKanavos Okayから緊急の電話がかかります。間違いを指摘していただきありがとうございます。だから私はパッケージの問題ではなく、自分の実装ミスであると仮定すべきですか? – TUSHAr