PostgresqlのlogにFATAL: lock file “postmaster.pid” already existsと出ていた時の備忘録

Database

PostgreSQL起動時にまたエラーが出た

普段使わないMacの方で、久しぶりにPostgreSQLを起動しようとしたらエラーが出た。

% psql postgres
psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory
	Is the server running locally and accepting connections on that socket?

 postgresql自体が14.4 から 14.5_5にヴァージョンアップされているが、@14なのは変わらない。 

databaseのアップグレードかな?とdatabaseのアップグレードもしてみたが、既にアップブレードされている、と出る。

% brew postgresql-upgrade-database      
Warning: Use postgresql@14 instead of deprecated postgresql
Error: postgresql data already upgraded!

困った時にはlogを見よう

良く分からないときには、logを見る癖を付けたい。

logを見るコマンドは下記。

% open /usr/local/var/log/postgres.log

見てみると気になるメッセージを繰り返し吐き出している。

エラーメッセージ

2022-10-17 20:14:38.660 JST [55109] FATAL:  lock file "postmaster.pid" already exists
2022-10-17 20:14:38.660 JST [55109] HINT:  Is another postmaster (PID 560) running in data directory "/usr/local/var/postgres"?

このエラーメッセージで検索して出てきたpostgreSQLのエラー:lock file “postmaster.pid” already existsのページ。

解決

こちらを参考に、”postmaster.pid”を削除してみた。

% rm /usr/local/var/postgres/postmaster.pid

すると無事postgresが起動できた!

 % psql postgres                            
psql (14.5 (Homebrew))
Type "help" for help.

原因と今後の注意点

Postgresでは、二重起動を防止するために、起動時にpostmaster.pidファイルを作成し、停止時にpostmaster.pidファイルを削除しているが、何らかの原因により正常に停止されなかった場合、このpostmaster.pidファイルが削除されずに残ってしまうことがあり、これが悪さをする様だ。

特に、brewでpostgresqlを起動した時には、
“brew services stop postgresql”のコマンドをするまで裏でずっと動いているので、どこかで異常終了して今回の様な問題に繋がる。

今後はPostgreSQLに限らず、SQLを使用し、その日の作業を終了する時には、都度終了してから終わるようにしたい。
皆様の情報共有に感謝。

コメント

タイトルとURLをコピーしました