PostgreSQLを使用していると以下のエラーに遭遇したことがある人は多いかもしれない。
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
psql -lコマンドを打つとこのような様子
psql: error: 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"?
サービスも停止している
brew services list
>>
Name Status User Plist
mysql stopped
postgresql error User /Users/User/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
まぁよくよく調べると解決方法の記事は意外とたくさんあったりする。
しかし、環境によってはうまく解決したり、しなかったり...。
ということで、今回はconnections on Unix domain socket "/tmp/.s.PGSQL.5432"?
の解決方法を数パターンまとめておく
(ちなみに今回はpythonプログラムからPostgreSQLを使用している)
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
これは、そもそもどういうエラーなの?
PostgreSQLの起動時に作成されるロックファイル(複数起動の抑制等のため)が残り続けているため、エラーになるようだ。ロックファイルはRAM領域に作成されるため、大体の場合再起動をかければ正常に動作したりする。
だが、起動時のデーモン等で複数起動をしてしまうようなことがあると再起動をしても同じことが起こりうるだろう..。
ということで再起動以外の解決方法をまとめておく。
postmaster.pidの削除
一番簡単な解決法1
PostgreSQLのロックファイルを削除してあげればいい。
rm /usr/local/var/postgres/postmaster.pid
これで正常に動作できた方はおめでとうございます。
PostgreSQLを再度起動させてみてください。Macの場合はbrew services restart postgresql
僕の環境ではどうもうまく行かなかった..。
そもそも「ロックファイルが存在しないよ」と言われた。
rm: /usr/local/var/postgres/postmaster.pid: No such file or directory
ということで、次の解決法にいきます
PostgreSQLのアップデートその1
さぁ。解決方法2について。
ちょっと原因よくわからないのでログを見てみます
(postgres -D /usr/local/var/postgres
コマンドで確認できます)
postgres -D /usr/local/var/postgres
>>
2021-08-11 19:24:48.664 JST [12659] FATAL: database files are incompatible with server
2021-08-11 19:24:48.664 JST [12659] DETAIL: The data directory was initialized by PostgreSQL version 12, which is not compatible with this version 13.3.
PC内のPostgreSQLとプログラム内のPostgreSQLのバージョンが一致していなさそう。バージョンを上げてみましょう
brew upgrade postgresql
brew services restart postgresql
...が、バージョンアップを図ってみたが僕の場合は解決せず…
PostgreSQLのアップデートその2
よくよくログを確認すると、
データディレクトリのバージョンの不一致で競合が起きている模様…。
データディレクトリの方をアップグレードしてみる
brew postgresql-upgrade-database
brew services restart postgresql
いけたっぽい。
psql -lも成功し、PostgreSQLを使用しているpythonプログラムも無事に起動できました。
しっかりサービスがstartされている。
brew services list
>>
Name Status User Plist
mysql started
postgresql error User /Users/User/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
以上、解決方法3パターンについてまとめてみました。
これでも解決できない場合は情報提供お願いします。
他にもpostgresql関連記事

コメント