外部サーバーから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つのデータベースを同期する方法はありますか?このような非互換性は自動的に修正されますか?
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クライアントバージョンを使用してデータをエクスポートおよびインポートすることをお勧めします。
受け入れられた答えは進むべき道ですが、何らかの理由でバージョンをアップグレードできない場合は、次善策があります。
pg_dump -F c -Z 9 dbname > file.Zip
zcat file.Zip | grep -vw "idle_in_transaction_session_timeout" | psql -d newdb
Pg_importの代わりにpsqlを使用することには欠点があることに注意してください。たとえば、-jを使用して同時にインポートすることはできません。