postgreslデータベースをアップグレードするにはどうすればよいですか?非互換性エラー


26

Homebrew経由でpostgresqlをインストールしました。

アップグレード後に次の問題が発生します。

FATAL: database files are incompatible with server DETAIL: The data directory was initialized by PostgreSQL version 9.0, which is not compatible with this version 9.1.2.

アップグレード方法に関するヒントはありますか?私は次を試しました:

$ pg_upgrade -d /usr/local/var/postgres/ -D /usr/local/var/postgres -b 
/usr/local/Cellar/postgresql/9.0.4/bin -B /usr/local/Cellar/postgresql/9.1.2/bin

うまくいきませんでした。出力は次のとおりです。

Performing Consistency Checks
Checking current, bin, and data directories                 ok
Checking cluster versions                                   
This utility can only upgrade to PostgreSQL version 9.1.
Failure, exiting

エラー。

回答:


36

Homebrewを使用したOS Xの場合、このようになりました。

  1. Homebrewで新しいpostgresをインストールしました(エラーが発生し始めました)
  2. mv /usr/local/var/postgres /usr/local/var/postgres.old
  3. initdb -D /usr/local/var/postgres
  4. pg_upgrade -b /usr/local/Cellar/postgresql/9.0.4/bin -B /usr/local/Cellar/postgresql/9.1.2/bin -d /usr/local/var/postgres.old -D /usr/local/var/postgres
  5. ./delete_old_cluster.sh (このスクリプトは、上記の手順を実行すると、現在のディレクトリに自動的に作成されます)
  6. rm delete_old_cluster.sh

素晴らしいと私は友人が必要なだけ!ありがとう。特にSnow LeopardからのLionのアップグレード後。server.log google peopleを確認してください!!
パジャマー

これは私にとって完璧に機能しました、ありがとう!これらの手順を実行する前にpostgresを実行しないでください。したがって、Homebrewを使用してインストールした場合は、自動的に起動する起動エージェントをアンロードしてくださいlaunchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist。上記のすべてのステップが完了したら、もう一度それをロードしますlaunchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
マルクスアマルテアマグナソン

6

これが、私がfedoraでそれをした方法です。

  • 古いデータディレクトリの名前をdata.oldなどに変更します
  • postgresql-setup initdbこれを実行すると、新しいデータディレクトリが作成されます
  • その後、実行します pg_upgrade -b /usr/lib64/pgsql/postgresql-9.0/bin/ -B /usr/bin/ -d data.old/ -D data

私はあなたにとってそれが次のようになると思います:

pg_upgrade -b /usr/local/Cellar/postgresql/9.0.4/bin -B /usr/bin/ -d /usr/local/var/postgres.old/ -D /usr/local/var/postgres/
  • また、pg_hba.confとpostgresql.confをdata.oldから新しいデータディレクトリにコピーする必要があります。
  • postgresqlを再起動します

1

「initdb」行を見逃した/忘れた

initdb -D / usr / local / var / postgres

DBが作成された後、pg_upgradeは私のWindowsシステムで機能しました。


0

以下のためにアーチのLinux、そこにあるのwikiで解決私のために罰金を働きました:

pacman -S --needed postgresql-old-upgrade
su -
su - postgres -c 'mv /var/lib/postgres/data /var/lib/postgres/data-9.2'
su - postgres -c 'mkdir /var/lib/postgres/data'
su - postgres -c 'initdb --locale en_US.UTF-8 -E UTF8 -D /var/lib/postgres/data'
su - postgres -c 'pg_upgrade -b /opt/pgsql-9.2/bin/ -B /usr/bin/ -d /var/lib/postgres/data-9.2 -D /var/lib/postgres/data'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.