【psql】connections on Unix domain socket を解決する

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関連記事

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!

コメント

コメントする

目次
閉じる