web-dev-qa-db-ja.com

HomebrewでインストールされたPostgreSQLが接続できませんでした。データベースファイルはサーバーと互換性がありません

psqlを使用してlocalhost PosgreSQLデータベースにログインしようとすると、今日表示されるエラーメッセージは次のとおりです。

psql: 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"?

私はHomebrewを使用してPostgreSQLをインストールし、今朝はそのユーティリティを使用してアンインストールして再インストールしましたが、変化はありませんでした。 psqlクライアントは正常に動作しますが、ネットワークを介してデータベースに接続するために引き続き使用できます。私はローカルデータベースに1〜2か月に1回だけ接続しており、以前は問題なく動作していたため、これは自動更新が原因であると想定していますが、どちらが原因なのかわかりません。 Mac OSは最近、自身をHigh Sierra(10.13)にアップグレードしました。

同じエラーメッセージが2014年にここに表示されました( link )が、これは男がサーバーを起動できない問題でした。私の場合、動作していると思います-brew services start postgresqlそしてはい、私は今日数回再起動しました。ただし、エラーで示されたファイル/tmp/.s.PGSQL.5432、私のシステムには存在しません。これはいくつかの設定ミスの場合だと思います。誰でも修正方法の手掛かりがありますか?

更新:(Evanの推奨に従って)手動でサーバーを起動してみましたが、突破口を開いたと思います。手動で起動しようとすると、次のエラーが発生します。

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

更新2:最終的に、データディレクトリを置き換え、initdbを使用して空のデータベースで再初期化することにより、この問題を解決しました。公平を期すために、3つの回答すべてが役に立ちました。古いバージョンのPostgresのバイナリがなくなったため、データベースを古いバージョンから新しいバージョンに更新できませんでした。

7
workerjoe

データがない場合、Brewに問題があるようです。 brew upgradeを実行しましたか? StackOverflowに関する2つの回答 がこれに対処します。両方を統合して、両方の世界のベストを試すようにしました。

  1. バックアップ

    launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
    Sudo mv /usr/local/var/postgres /usr/local/var/.postgres_bak;
    
  2. 最新バージョンであることを確認する

    brew update
    brew upgrade postgresql
    
  3. どちらか一方を再初期化するか、data-dirをアップグレードしてください

    1. Nuke it(最初から、古いバックアップを残して)

      initdb /usr/local/var/postgres -E utf8
      
    2. アップグレードしてみてください

      pg_upgrade -b /usr/local/Cellar/postgresql/$myOldVersion/bin/ -B /usr/local/Cellar/postgresql/$myNewVersion/bin -d /usr/local/var/.postgres_bak -D /usr/local/var/postgres
      
  4. サーバーを再起動します。

    brew services start postgresql
    
  5. サーバーを再起動してすべてが機能する場合はバックアップを削除します。

    Sudo rm -rf /usr/local/var/.postgres_bak
    
7
Evan Carroll

うまくいけば、あなたはbrew cleanup postgresqlまだ。 brew infoは、以前のバージョンがまだあるかどうか、実行する必要があるかもしれないという事実など、すべての関連情報を提供しますpg_upgrade(以下の短縮された出力)。

これにより、データベースのバージョンがわかります:cat /usr/local/var/postgres/PG_VERSION

PostgreSQL 10.1にアップグレードするつもりがなく、以前のバージョンが9.6.6であると想定すると、これで十分な場合があります:brew switch postgresql 9.6.6

古いバージョンを再インストールする必要がある場合、これは機能する可能性があります: https://stackoverflow.com/a/9832084/279726

データディレクトリは/usr/local/var/postgresデフォルトでは(私は変更していません)、以下の出力の最後の行を参照してください。

$ brew info postgresql
postgresql: stable 10.1 (bottled), HEAD
[...]
==> Caveats
To migrate existing data from a previous major version of PostgreSQL, see:
  https://www.postgresql.org/docs/10/static/upgrading.html

  You will need your previous PostgreSQL installation from brew to perform
  `pg_upgrade` or `pg_dumpall` depending on your upgrade method.

  Do not run `brew cleanup postgresql` until you have performed the migration.

To have launchd start postgresql now and restart at login:
  brew services start postgresql
Or, if you don't want/need a background service you can just run:
  pg_ctl -D /usr/local/var/postgres start
$

しかし、10.1を使用したい場合は、基本的にこれのようなを実行できますが、以前に9.6.6を実行していたと仮定すると(実際の前のPostgreSQLバージョン)。 oneコマンドを一度に実行し、次の手順に進む前に出力を確認します。

mv -i /usr/local/var/postgres /usr/local/var/postgres96
mkdir /usr/local/var/postgres
pg_upgrade -b /usr/local/Cellar/postgresql/9.6.6/bin -B /usr/local/Cellar/postgresql/10.1/bin -d /usr/local/var/postgres96 -D /usr/local/var/postgres

詳細はこちらをご覧ください: https://www.postgresql.org/docs/10/static/pgupgrade.html

********************************************************
* PLEASE MAKE BACKUPS BEFORE DOING ANY OF THE ABOVE!!! *
********************************************************

面白いのは、最新のPostgreSQLをインストールしようとすると、次のような結果になります。

$ brew install postgresql
Error: postgresql 9.5.5 is already installed
To upgrade to 10.1, run `brew upgrade postgresql`

そのため、メッセージが表示されずに9.6.xから10.1にどのように移行したかはわかりません...

1
Kamal
  • 他のバージョンのPostgreSQLがインストールされていますか、それともbrewのものだけですか?
  • あなたがそれに接続するためにサーバー自体が実行されていますかチェックSudo ps aux
  • 正しいポートに接続していますか? netstatを参照してください Craigによるこの素晴らしい投稿 を参照してください。
  • Brewを使用して新しいバージョンのPostgreSQLにアップグレードしますか?もしそうなら、あなたはこれをチェックしたいと思うかもしれません Stackoverflowの地獄の人気の質問

また、この投稿、および サーバーを手動で起動する もご覧ください。

0
Evan Carroll