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を使用し、その日の作業を終了する時には、都度終了してから終わるようにしたい。
皆様の情報共有に感謝。
コメント