🧰

【🔴エラー対応】「Rails s」でPostgreSQLが実行できなくなった

2022/08/12に公開

✅エラー状況

当方、自分が所有している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