問題
PostgreSQLを接続する時に、下記のエラーが出て困ったため、対応を書いておきます。
psql: could not connect to server: Connection refused Is the server running on host "localhost" and accepting TCP/IP connections on port 5432?
私の環境は下記の様になっています。
- Windows10 64bit
- PostgreSQL Ver.10.10
解決策
私の環境では、PostgreSQLを再起動すれば解決しました。
ただ、再起動の仕方が「スタートメニュー」->「コンピューターの管理」からPostgreSQLを再起動するやり方だと上手くいきませんでした。
コマンドプロンプトから再起動するやり方だと上手くいきました。
pg_ctl restart -D "C:\Program Files\PostgreSQL\10\data"
上記のパスは、自身のインストールフォルダ、PostgreSQLのバージョンに合わせて変更してください。
コマンドプロンプトは、管理者として実行する必要があります。
下記のような実行結果例が返ってくると思います。
サーバ停止処理の完了を待っています....完了
サーバは停止しました
サーバの起動完了を待っています....2019-11-27 02:23:00.130 JST [4728] LOG: IPv6アドレス"::"、ポート5432で待ち受けています
2019-11-27 02:23:00.130 JST [4728] LOG: IPv4アドレス"0.0.0.0"、ポート5432で待ち受けています
2019-11-27 02:23:00.149 JST [4728] LOG: ログ出力をログ収集プロセスにリダイレクトしています
2019-11-27 02:23:00.149 JST [4728] ヒント: ここからのログ出力はディレクトリ"log"に現れます。
完了
サーバ起動完了
どうやらPostgreSQLを正常に終了しないと、postmaster.pidが残ってしまい起動に失敗するようです。
私は再起動で解決しましたが、解決しない場合、postmaster.pidを削除してから再起動すると良いそうです。
C:\Program Files\PostgreSQL\10\data\postmaster.pid
にあります。
上記のパスは、自身のインストールフォルダ、PostgreSQLのバージョンに合わせて変更してください。
他にも、下記の理由により同じエラーが生じることがあるそうです。
- ポート5432が空いていなかった
- postgresql.confの設定が足りず他のホストのアクセスを受け付けていなかった
- pg_hba.confの設定がされていなかった
参考文献
PostgreSQL pg_ctlコマンドで起動、停止、起動確認する Windows - Sierエンジニアのブログ
PostgreSQLに接続できず困った - Qiita