2017-01-08 47 views
17

私は、外部のサーバから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つのデータベースを同期させる方法があるので、このような非互換性は自動的に修正されますか?

答えて

24

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

E.2.3.1.10. Server Configuration

Allow sessions to be terminated automatically if they are in idle-in-transaction state for too long (Vik Fearing)

This behavior is controlled by the new configuration parameter idle_in_transaction_session_timeout. It can be useful to prevent forgotten transactions from holding locks or preventing vacuum cleanup for too long.

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

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

+1

それはそうでなければなりません。 9.6がインストールされている私のWindowsホスト上で、Postgresql Maestro(pgadminのような管理ツール)を使ってバックアップを作成しました。しかし、ゲストマシンは9.5です。私がバックアップしたデータベースも9.5で動いているので、Maestroはバックアップを取ったときに外部サーバーのバージョンを考慮していないようです。 –

0

例外はありますが、何らかの理由でバージョンをアップグレードできない場合は、回避策があります。

  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を使用することはできません。

関連する問題