postgreSQLのエラー:lock file "postmaster.pid" already exists
1. 原因:異常終了して二重起動になってしまい、接続できない
psql接続できない問題が発生
エラー内容
code:script.rb
psql: error: could not connect to server: 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"?
# 日本語訳
psql: エラー: サーバーに接続できませんでした。そのようなファイルまたはディレクトリがありません
サーバはローカルで動作していて
Unixドメインソケット"/tmp/.s.PGSQL.5432 "での接続?
ログをみる
code:script.rb
$ postgres -D /usr/local/var/postgres
# 実行結果
2020-12-10 21:13:16.853 JST 3723 FATAL: lock file "postmaster.pid" already exists 2020-12-10 21:13:16.853 JST 3723 HINT: Is another postmaster (PID 495) running in data directory "/usr/local/var/postgres"? # 日本語訳
- ロックファイル "postmaster.pid "が既に存在します。
- データディレクトリ"/usr/local/var/postgres "に別のポストマスタ(PID 495)が稼働していませんか?
起動時に作成されるロックファイルがすでに存在していて、エラーになっている模様。
つまり二重起動?おそらく前回起動したpostgresプロセスが正常に停止していないと想像。
(そいえば、昨日の夜macのバッテリーが少ない状態でスリープかけて朝起きたら勝手にシャットダウンしてたのと関係するかも)
->brew services start postgresqlのままにして1ヶ月以上たってるから、異常終了しててもおかしくない。。
こまめにbrew services stop postgresqlした方がいいのかも。。
postmaster.pidファイルは、postgresが起動するときに作成し、終了するときに削除しています。
そのため、何らかの理由で正常な終了処理ができないと、postmaster.pidファイルが残ることがあります。
調べていたら、pidを削除してpostgresqlを再起動する方法がいくつかの記事で書かれていたので実行することに。正しい方法か分かってない状態で試みるのは良くないが、大したデータは入ってないので最悪アンインストールするつもり。
code:script.rb
# 既存のpid削除
$ rm /usr/local/var/postgres/postmaster.pid
# 再起動
$ brew services restart postgresql
# ログイン
$ psql -U postgres
ログインできた!ひとまず解決。
https://gyazo.com/04442dabc26574fd670604448befc079
チェックした記事