14
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Tama.rbAdvent Calendar 2018

Day 3

いい加減覚えたい!RailsアプリでローカルのPostgreSQLが起動していないときの復旧手順

Last updated at Posted at 2018-11-26

背景

rails s を実行し、ローカル環境のURLにアクセスすると、
ごくたまに PG::ConnectionBad というエラーを見ることがあります。
ローカル環境で PostgreSQLRails の接続が上手くいかないことが原因なのだと理解しているのですが、毎回復旧手順をググっているなと思い観念してまとめます。

前提

  • postgresql のバージョン 10.5
$ brew info postgresql
postgresql: stable 10.5 (bottled), HEAD
Object-relational database system
https://www.postgresql.org/

発生事象

rails s を実行して、サーバー起動し、
開発環境URLにアクセスすると以下のような画面になる!
Rails側ローカルのPostgreSQLの接続 が上手くいってないっぽい...

スクリーンショット 2018-11-26 18.39.46.png

手順1 : psコマンド

ps aux | grep 確認したいプロセス名 で現在の起動状態を確認する

$ ps aux | grep postgres
fuqda   2272   0.0  0.0  4286184    904 s000  R+    6:42PM   0:00.00 grep --color=auto postgres

grep --color=auto postgres とだけ表示されている場合は、
先ほどのコマンドのプロセスだけが見つかったということなので postgres 本体は動いてないことを確認 :skull:

手順2 : tailコマンド

tail コマンドで postgres が起動された時に作られるファイルの存在を確認する

$ tail /usr/local/var/postgres/server.log
2017-12-18 17:18:51.032 JST [31764] FATAL:  lock file "postmaster.pid" already exists
2017-12-18 17:18:51.032 JST [31764] HINT:  Is another postmaster (PID 31311) running in data directory "/usr/local/var/postgres"?

lock file "postmaster.pid" already exists が表示されたので、
postgres が正常に終了した場合に消される、プロセスが存在することを表すファイルが残ってしまっていることがわかる

手順3 : rmでゴミファイルを消す

とりあえずそのゴミファイル(postmaster.pid)を消す

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

手順4 : launchctlコマンドでpostgresql.plistファイルをロードし直す

$ launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
$ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

手順5 : psコマンドで再度postgresの起動を確認

$ ps aux | grep postgres
fuqda   2569   0.0  0.0  4287208    936 s000  S+    6:44PM   0:00.01 grep --color=auto postgres
fuqda   2533   0.0  0.0  4449164   1644   ??  Ss    6:44PM   0:00.00 postgres: bgworker: logical replication launcher
fuqda   2532   0.0  0.0  4304096    924   ??  Ss    6:44PM   0:00.00 postgres: stats collector process
fuqda   2531   0.0  0.0  4449164   1856   ??  Ss    6:44PM   0:00.00 postgres: autovacuum launcher process
fuqda   2530   0.0  0.0  4449164   1108   ??  Ss    6:44PM   0:00.00 postgres: wal writer process
fuqda   2529   0.0  0.0  4449164   1160   ??  Ss    6:44PM   0:00.00 postgres: writer process
fuqda   2528   0.0  0.0  4449164   1060   ??  Ss    6:44PM   0:00.00 postgres: checkpointer process
fuqda   2523   0.0  0.1  4449420  17012   ??  S     6:44PM   0:00.04 /usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgres

これでOK

14
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?