2013-07-07 11 views
9

my question earlier todayによると、私のMySQLデータベースにデータが注入されないようにする閉鎖されていない接続に問題があると思われます。現在使用されていないテーブルにはデータが許可されています(したがって、多くのオープンな接続が特定のテーブルへのアップロードを妨げると思われます)。RMySQLを使用したアクティブな接続のクローズ

私はUbuntuサーバでRMySQLを使用して、MySQLデータベースにデータをアップロードしています。

私はa)接続が開いているかどうかを判断しています。b)接続が開いているかどうかを確認します。 sqlコマンドラインのexec sp_whoおよびexec sp_who2コマンドは、sqlコードエラーを返します。

もう1つの注意:私は接続することができて、アップロードプロセスを完了し、Rプロセスを正常に終了し、そのテーブルだけを試してみると、サーバー上にデータがない(sqlコマンドラインでチェックされている)

(ところで:?。他のすべてが失敗した場合、単純にテーブルを削除し、同じ名前、それを修正して新しいものを作成することは非常に苦痛になり、なんとかでしょう)あなたの助けを

ありがとう!

+1

あなたは 'ショーフルPROCESSLISTを試みることができる;'見て開いている接続。 – cryo111

答えて

12

a。 dbListConnections(dbDriver(drv = "MySQL"))

b。 dbDisconnect(dbListConnections(dbDriver(drv = "MySQL"))[[index of MySQLConnection you want to close]])。すべて閉じるには:lapply(dbListConnections(dbDriver(drv = "MySQL")), dbDisconnect)

はい、すべてのデータを失うことはもちろん、テーブルを書き換えることもできます。またはdbWriteTable(, ..., overwrite = TRUEと指定できます)。

私はまたrow.namesheaderfield.typesquotesepeolのように、他のオプションと遊ぶでしょう。私はRMySQLでも奇妙な動作をしています。具体的なことは思い出せませんが、row.namesを設定するのを忘れるなど、間違ったことをしたときにエラーメッセージが表示されなかったようです。 HTH

10

閉じるすべてのアクティブな接続:

dbDisconnectAll <- function(){ 
    ile <- length(dbListConnections(MySQL()) ) 
    lapply(dbListConnections(MySQL()), function(x) dbDisconnect(x)) 
    cat(sprintf("%s connection(s) closed.\n", ile)) 
} 

は、実行: dbDisconnectAll()

1

が接続を閉じる

あなたはそれらの接続を切断する()dbListConnectionsと一緒に)dbDisconnectを(使用することができますRMySQL管理中:

すべての接続が

dbListConnections(MySQL()) 

を閉鎖してきた

チェックはまた、あなたが(RMySQLで管理されていないものだけ)に許可されている任意の接続殺すことができる:

MYDBがある
dbGetQuery(mydb, "show processlist") 

を..

mydb = dbConnect(MySQL(), user='user_id', password='password', 
         dbname='db_name', host='host') 

特定の接続

dbGetQuery(mydb, "kill 2") 
    dbGetQuery(mydb, "kill 5") 
1

最も簡単閉じる:

lapply(dbListConnections(dbDriver(drv = "MySQL")), dbDisconnect) 

すべての接続リストとlapplyによってそれらを外しが

関連する問題