web-dev-qa-db-ja.com

Postgresql-認識されない構成パラメーター

外部サーバーからpostgresqlデータベースをエクスポートし、ローカルサーバーにインポートしようとしましたが、このエラーが発生しました。

unrecognized configuration parameter "idle_in_transaction_session_timeout"

この種のエラーは、2つのサーバーが異なるバージョンのpostgresqlを使用していることを意味しますか?私はそれを調べ、外部サーバーが実行されています:

version
PostgreSQL 9.5.4 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64-bit 

私のサーバーが実行されています:

version
PostgreSQL 9.5.5 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 5.4.0-6ubuntu1~16.04.2) 5.4.0 20160609, 64-bit 

ほぼ同じこと。各バージョンのすべての有効な構成パラメーターを確認できるサイトはありますか?そして、このような2つのデータベースを同期する方法はありますか?このような非互換性は自動的に修正されますか?

40

Postgresql 9.6リリースノート によると、idle_in_transaction_session_timeoutパラメーターはバージョン9.6で導入されました。

E.2.3.1.10。サーバー構成

セッションが長時間アイドル状態になっている場合にセッションを自動的に終了できるようにします(Vik Fearing)

この動作は、新しい構成パラメーターidle_in_transaction_session_timeoutによって制御されます。忘れられたトランザクションがロックを保持したり、バキュームのクリーンアップが長すぎないようにするのに役立ちます。

サーバーでバージョン9.5を使用しているため、パラメーターは認識されません。

バージョン9.6のPostgresqlクライアントを使用してソース9.5サーバーからデータをエクスポートし、パラメーターがダンプファイルに導入された可能性があります。この場合、9.5クライアントバージョンを使用してデータをエクスポートおよびインポートすることをお勧めします。

43
cjungel

受け入れられた答えは進むべき道ですが、何らかの理由でバージョンをアップグレードできない場合は、次善策があります。

  1. プレーンテキストを使用してエクスポートします。おそらく圧縮も使用したいでしょう。 pg_dump -F c -Z 9 dbname > file.Zip
  2. インポートする前に、問題のあるパラメーターを削除する必要があります。そのために、zcatとgrepを使用できます。 zcat file.Zip | grep -vw "idle_in_transaction_session_timeout" | psql -d newdb

Pg_importの代わりにpsqlを使用することには欠点があることに注意してください。たとえば、-jを使用して同時にインポートすることはできません。

2
OleTraveler