Postgres-致命的:データベースファイルはサーバーと互換性がありません


185

MacBook Proを再起動した後、データベースサーバーを起動できません。

could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

ログを確認すると、次の行が繰り返し表示されます。

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

9.0.4はMacにプリインストールされていたバージョンで、9.2 [.4]はHomebrewを介してインストールしたバージョンです。前述のように、これは再起動前に機能していたため、実際にコンパイルの問題になることはありません。私も再実行initdb /usr/local/var/postgres -E utf8しましたが、ファイルはまだ存在しています。

残念ながら、私はPostgresにかなり慣れていないので、どんな助けにも感謝します。


1
どのようにpostgresを開始しますか?開始スクリプトが新しいバージョンを指し示していますか?エラーメッセージに基づいて、両方のバージョンが同時にインストールされていると思います。
fvu 2013

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start-そして応答はserver starting
klaffenboeck 2013

1
という名前のファイルを検索するpg_ctl と、2つのコピーが見つかるはずです。そして、一致which pg_ctlするものが古いバージョンになり、もう一方が新しいバージョンになります。
fvu 2013

ランニングはpg_ctl --versionできますpg_ctl (PostgreSQL) 9.2.4
klaffenboeck

2
@EvanCarrollもちろんそうしました。私は今、それらを内部にバンドルするように移動し、Server.appデフォルト以外のポートとUNIXソケットディレクトリを使用するように非表示にしたと思います。最後に!
クレイグリンガー2017

回答:


362

10.xから最近11または12にアップグレードした場合は、以下のコマンドを実行して、すべてのデータを保持するpostgresデータディレクトリをアップグレードできます。

brew postgresql-upgrade-database

上記のコマンドはの出力から取得されます brew info postgres


2
これは魅力のように機能しましたが、機能した後、2番目のエラーが発生しました。postgresをbrew postgresql-upgrade-database再起動して、initdbによって作成されたデータベースをアップグレードすることを忘れないでください
Shemogumbe

9.5から11にも対応しました。使用方法を示すための称賛brew info
yacc

2
10から11.5まで。あなたは命の恩人です。<3
トーマス

4
11〜12でも動作します。
stevex

1
9.5から12まで動作します!!
アウグストサマメバリエントス

169

核オプション(すべてのデータを削除して新しいデータベースを取得する)を探している場合は、次のことができます。

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8

その後、Railsアプリとの間でセットアップをやり直す必要がrake db:setupありrake db:migrateます。


3
上記がそれでも機能しない場合(これが私の場合でした)、initdbに新しいデータディレクトリ名を付けてみてください(例:/ usr / local / var / postgres95)。
mpelzsherman 2016

ところで、この直後に、おそらくcreateuser -s your_rails_appRailsのpostgresユーザーを作成するために実行する必要があります。stackoverflow.com/questions/11919391/…を
Meekohi

38

これを試してください:https : //gist.github.com/joho/3735740

それは私には完璧に働きました。最後に、DBをチェックして古いクラスターを削除するための2つのbashスクリプトも生成します。本当に素晴らしい。

詳細については、http//www.postgresql.org/docs/9.2/static/pgupgrade.htmlを参照してください


2
9.4から9.5への移行で私にとっては完璧に機能しました。
tftdias 16

9.3.4から9.5.2への移行で私のためにも働いた。
Steve Jorgensen

1
ここでは自作(MacOSの)を使用して9.6.1にアップデート9.5.5のための手順は次のとおりです。gist.github.com/giannisp/b53a76047b07751ed3ade3c1db1d2c51
Giannis

それが間違いなく最高の答えになるはずです!! そして、データの損失はありません。
FlorianB 2016

9

インターネットで見つけたこのソリューションは、私にとってはうまく機能します。

OS X 10.10 Yosemiteへのアップグレード後にpostgresqlサーバーを起動しようとすると、次の問題が発生しました。

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?

さて、サーバーログを見てみましょう:

cat /usr/local/var/postgres/server.log

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

したがって、postgresqlのアップグレード後にいくつかの手順を実行する必要があります。

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

mv /usr/local/var/postgres /usr/local/var/postgres92

brew update

brew upgrade postgresql

initdb /usr/local/var/postgres -E utf8

pg_upgrade -b /usr/local/Cellar/postgresql/9.2.3/bin -B /usr/local/Cellar/postgresql/9.3.5_1/bin -d /usr/local/var/postgres92 -D /usr/local/var/postgres

cp /usr/local/Cellar/postgresql/9.3.5_1/homebrew.mxcl.postgresql.plist ~/Library/LaunchAgents/

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

rm -rf /usr/local/var/postgres92

それでおしまい。


1
上記の手順を使用して9.53から10.0にアップグレードしました。pg_upgradeコマンドが少しアップグレードされました。新しいコマンドはpg_upgrade -b /usr/local/Cellar/postgresql/9.5.3/bin/ -B /usr/local/Cellar/postgresql/10.0/bin -d / usr / local / var / postgres95 -D / usr / local / var / postgres
techvineet 2017年

下記よりよい解決策
Gady

8

以前のバージョンのpostgresを保持したい場合は、次を使用しますbrew switch

$ brew info postgresql

postgresql: stable 10.5 (bottled), HEAD
Object-relational database system
https://www.postgresql.org/
Conflicts with:
  postgres-xc (because postgresql and postgres-xc install the same binaries.)
/usr/local/Cellar/postgresql/9.6.3 (3,259 files, 36.6MB)
  Poured from bottle on 2017-07-09 at 22:15:41
/usr/local/Cellar/postgresql/10.5 (1,705 files, 20.8MB) *
  Poured from bottle on 2018-11-04 at 15:13:13

$ brew switch postgresql 9.6.3
$ brew services stop postgresql
$ brew services start postgresql

それ以外の場合は、次のbrewコマンドを検討して、既存のデータを移行してくださいbrew postgresql-upgrade-databaseソースコードを確認しください。


1

postgres11がマウントされたボリュームでPostgres12を起動しようとしたときに、それが起こりました。postgres11のマウントされたボリュームを削除して再起動するだけでうまくいきました。

以前は以下を使用していました:

docker run -d --name my_database -v /Users/champ/postgres:/var/lib/postgresql/data -p 54320:5432 postgres:11

/ Users / champ / postgresを削除してpostgres 12を再起動しました。

docker run -d --name my_database -v /Users/champ/postgres:/var/lib/postgresql/data -p 54320:5432 postgres:12
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.