- postgreSQLのエラーに悩んでいる方
- PG::ConnectionBadの解消方法を知りたい方
- postgreSQLが立ち上がらない方
今回は、PostgreSQLが上手く立ち上がらない場合の対処方法について紹介していきます。
postgreSQLを立ち上げようとすると、このようなエラーが出ました。
Postgres PG::ConnectionBad: 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”?
エラーをざっくり訳すと下記の通りです。
「ファイルが無い、もしくは既に別のサーバーが既に動いてるんじゃない?」
みたいな感じです。
Contents
PostgreSQLを終了させる際は、必ずターミナルでCtr + Cを押してサーバーを終了させなければいけなかったのですが、それをやっていませんでした。
これはPostgreSQLを再起動すれば解決します。
ターミナルで上から順番に実行してください。

下の#の部分はコメントだから、入力しないでね。
#PostgreSQLを自動起動するように設定
$ brew services start postgresql
#PostgreSQLの自動起動を解除
$ brew services stop postgresql
#PostgreSQLを再起動
$ brew services restart postgresql
意味も分からず、ただコマンドを打つだけでは勉強にならないと思うので、コマンドについてざっくりと説明しておきますね。
先頭のbrewは、パッケージを管理できるHomebrewというシステムを使って操作していることを意味します。
パッケージとは、便利なアプリみたいな感じと思ってください。
Homebrewを使えば、こんなことができるので人気なのです。
・プログラミングに必要なパッケージをインストールしたりアンインストールしたりできる!
・パッケージのアップデートをまとめて行える!
実際にターミナル上で、brewコマンドを使う際は、下のようにbrewの後ろに「install」や「uninstall」などのコマンドを続けて実行します。
#パッケージのインストール
$brew install パッケージ名
#パッケージのアンインストール
$brew uninstall パッケージ名
Homebrewにはservicesという便利なコマンドが備わっています。
mac OSを起動すると同時に、パッケージを常に起動させる場合は、
$brew services start パッケージ名
上の常時起動を解除したい場合は、
$brew services stop パッケージ名
パッケージの再起動したい場合は、
$brew services restart パッケージ名
今回は問題なかったのですが、postmaster.pidファイルが残っていることでエラーが出る場合があるようです。
ただこれはファイルを消してやるだけで簡単に解決します。
まずターミナルもしくはFinderでpostgresディレクトリへ移動します。

ターミナルの移動コマンドをちゃんと使えてる?
指定のディレクトリに移動したい場合は、cdコマンドを使います。
現在、ホームディレクトリにいる場合、以下のようにターミナルで実行してください。($の後を実行してくださいね!)
XXXXXXMacBook:~ ユーザー名$ cd /usr/local/var/postgres
ホームディレクトリからpostgresディレクトリへ移動できました。
ただ、そもそもpostgresディレクトリにファイルが無いかもしれないのでディレクトリの中身を確認しましょう。
ディレクトリの中身の確認は、lsコマンドですね。
XXXXXX:postgres ユーザー名$ ls
そうすると、下のようにファイルの一覧を見ることができます。
PG_VERSION pg_notify pg_wal
base pg_replslot pg_xact
global pg_serial postgresql.auto.conf
pg_commit_ts pg_snapshots postgresql.conf
pg_dynshmem pg_stat postmaster.opts
pg_hba.conf pg_stat_tmp postmaster.pid
pg_ident.conf pg_subtrans postmaster.pid_bak
pg_logical pg_tblspc
pg_multixact pg_twophase

postmaster.pidがあるよ!
postmaster.pidファイルがあれば、rmコマンドで削除してあげます。
$rm postmaster.pid
これでOKです。
一度ターミナルを再起動して試してみましょう!!
最後に今回の記事のまとめをしておきます。
サーバー立ち上げ時に、PG::ConnectionBadが出た場合は、以下を試してみましょう。
[1] PostgreSQLを再起動する
[2] Postmaster.pidを削除する
コメントを残す