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のバイナリがなくなったため、データベースを古いバージョンから新しいバージョンに更新できませんでした。
データがない場合、Brewに問題があるようです。 brew
upgradeを実行しましたか? StackOverflowに関する2つの回答 がこれに対処します。両方を統合して、両方の世界のベストを試すようにしました。
バックアップ
launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Sudo mv /usr/local/var/postgres /usr/local/var/.postgres_bak;
最新バージョンであることを確認する
brew update
brew upgrade postgresql
どちらか一方を再初期化するか、data-dirをアップグレードしてください
Nuke it(最初から、古いバックアップを残して)
initdb /usr/local/var/postgres -E utf8
アップグレードしてみてください
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
サーバーを再起動します。
brew services start postgresql
サーバーを再起動してすべてが機能する場合はバックアップを削除します。
Sudo rm -rf /usr/local/var/.postgres_bak
うまくいけば、あなたは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にどのように移行したかはわかりません...
Sudo ps aux
?netstat
を参照してください Craigによるこの素晴らしい投稿 を参照してください。また、この投稿、および サーバーを手動で起動する もご覧ください。