web-dev-qa-db-ja.com

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

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にかなり慣れていないので、どんな助けでも大歓迎です。

102
klaffenboeck

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

brew postgresql-upgrade-database

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

144

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

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

次に、Railsアプリからrake db:setupおよびrake db:migrate]を使用してセットアップを再度行う必要があります。

147
Meekohi

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

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

参照: http://www.postgresql.org/docs/9.2/static/pgupgrade.html .

38
gdurelle

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

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

それでおしまい。

8
Gianluca Musa

以前のバージョンの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ソースコード を確認してください。

4
peresleguine