2016-09-19 14 views
1

私はいくつかのデータフレームを構築し、次にそれらをPostgresデータベースに格納しようとするRコードを持つファイルを持っています。これは一般的に失敗し、失敗したコードスニペットは以下のとおりです。; 「期限切れのPostgreSQLConnection」エラーの解決方法

require ("RPostgreSQL") 

drv <- dbDriver("PostgreSQL") 
res <- dbConnect (drv, dbname = db, 
      host = "localhost", port = 5432, 
      user = "postgres", password = pw) 

table_name <- "gemeenten" 
print (c ("adding ", table_name)) 
if (dbExistsTable (con, table_name)) dbRemoveTable (con, table_name) ### Error! 
result <- dbWriteTable (con, table_name, gemeenten) 

私が手にエラーがある:

Error in postgresqlQuickSQL(conn, statement, ...) : 
    expired PostgreSQLConnection 

とエラーがdbExistsTableのテストで発生します。 dbListConnections (PostgreSQL())に電話すると、毎回1つずつ接続数が増えます。dbDisconnect (con)は、この番号を減らしません。

.Profileファイルからドライバを作成しようとしたときにこのエラーが発生しました。これを解決するには、drv変数を削除してもう一度割り当てます。私はこのテーブルの作成に2回成功しましたが、なぜこれが起こったのか再構築できません。誰かが私が間違っていることを知っていますか?

答えて

1

私が気づいたことの1つは、私が試行を始めるときにこのエラーが出始めたことです。ソースを開始するときに私は多くの間違いを犯し、私はPostgresのステータス画面でこれらの接続が開いたままであることに気付きました。私は慎重に使用後にすべての接続disConnectしようとしました。 tryCatchブロックを使用することは、この点で非常に有用です。 finallyブランチを使用して接続を終了し、ドライバをアンロードして変数を削除します。 Postgresからの接続を閉じるときにはまだ十分ではありません。Rはまだ開いていると思っており、16の接続が開いた後で接続の試行を拒否します。 dbListConnections (PostgreSQL())はリストリストdisConnectを返します。

これは最初はうまくいきませんでしたが、パッケージ「RPostgreSQL」を削除しようとしましたが、それも機能しませんでした。ライブラリから手動で削除する必要がありました。私はPostgresのRの初心者なので、私はインストール中に何か間違っていると思う。とにかく、パッケージを取り出して再インストールします。次に、PostgreSQLサーバを再起動します。その後、それは働いた。

多少のパラノイド私は同意しますが、睡眠の夜を忘れた後、私はチャンスを取ることを望んでいませんでした:-)誰かが問題の原因をより正確に特定できれば、 1。

関連する問題