🧰
【🔴エラー対応】「Rails s」でPostgreSQLが実行できなくなった
✅エラー状況
当方、自分が所有しているMacにて、RailsでWEBアプリを開発しているのですが、
突如、「Rails s」コマンドでエラーが発生し、Railsが起動できなくなってしまった。
🔴エラーメッセージ
psql: 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」で接続を受け入れていますか?
🔴エラー発生までの経緯
昨日までは、エラーも出ず正常にrailsが起動できた(その後、OSをシャットダウン)が、
翌日、OSを起動したら「Rails s」が使用できなくなった。
🔴試してみたこと
- OSの再起動
- PostgreSQLの再起動(「brew services stop/start」コマンドを実施)
- 「Rails c」、「Rails db」コマンドなどのrailsコマンドでも同事象が発生
- Railsコマンドを使わず、PostgreSQLコマンド(psql)でも同事象が発生
🔴当方の開発環境
項目 | バージョン or 詳細 |
---|---|
MacOS | Catalina 10.15.6 |
パッケージ管理システム | Homebrew |
PostgreSQL | 11.9 |
Ruby | 2.6.5 |
Ruby on Rails | 5.2.4 |
✅解決した方法
以下の方法で解決しました
パッケージ管理システムは「Homebrew」
#PostgreSQLのサービスを停止
brew services stop postgresql
#クラッシュファイルを削除
rm /usr/local/var/postgres/postmaster.pid
#PostgreSQLのサービスを起動
brew services start postgresql
🔴そのほかの解決方法
上記の方法で解決しなかった場合は、PostgreSQLの再インストールを実施しました。
パッケージ管理システムは「Homebrew」
#PostgreSQLのアンインストール
brew uninstall --force postgresql
#PostgreSQLの残ファイルを削除
ll /usr/local/var/postgres
rm -rf /usr/local/var/postgres
#PostgreSQLのインストール
brew install postgresql
✅原因
当方の場合、プロセスがクラッシュした際に起因する「postmaster.pid」ファイルが残っていたため、エラーが発生していたようです。
いわゆるゴミファイルが残ってしまっているため、PostgreSQLが起動できなかったようです。
エラー発生の傾向として、OSの起動後にrailsコマンドが使用できなくなったことから、
前回のOSのシャットダウンの時に、OSまたはPostgreSQLがクラッシュし、PostgreSQLが正常に停止できなかった可能性が考えられます。
✅参考文献
PostgreSQLがMacで実行されていない
PostgreSQLのインストールから起動/停止まで
[MacOS] PostgreSQL の全バージョンをアンインストールする方法 ~ Homebrew 編
Discussion