Windows 10でPostgreSQLに接続できなかった際の記録です。
環境
- Windows 10
- PostgreSQL 11.8
エラーメッセージ
psql
コマンドを実行するも、以下のエラーメッセージが表示されデータベースに接続できませんでした。psql -U ユーザー名 -d データベース名
でユーザーとデータベースを指定しても変わらず。
> psql
psql: サーバに接続できませんでした: Connection refused (0x0000274D/10061)
サーバはホスト "localhost" (::1) で稼動しており、
また、ポート 5432 で TCP/IP 接続を受け付けていますか?
サーバに接続できませんでした: Connection refused (0x0000274D/10061)
サーバはホスト "localhost" (127.0.0.1) で稼動しており、
また、ポート 5432 で TCP/IP 接続を受け付けていますか?
ちなみに英語だとこのようなエラーメッセージになるはず1。
could not connect to server: Connection refused
Is the server running on host "localhost" (::1) and accepting
TCP/IP connections on port 5432?
could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?
原因
複数の原因が考えられると思いますが、pg_ctl -D "データベース設定ファイルへのパス" status
で確認してみたところ、今回はそもそもサーバーが動作していませんでした。
> pg_ctl -D "C:\Program Files\PostgreSQL\11\data" status
pg_ctl: サーバが動作していません
解決策
pg_ctl -D "データベース設定ファイルへのパス" start
でサーバーを起動します。設定ファイルへのパスの数字の部分には、PostgreSQLのバージョンが入ります。
> pg_ctl -D "C:\Program Files\PostgreSQL\11\data" start
サーバの起動完了を待っています....2020-07-07 09:35:07.339 JST [3884] LOG: IPv6アドレス"::"、ポート5432で待ち受けていま
す
2020-07-07 09:35:07.339 JST [3884] LOG: IPv4アドレス"0.0.0.0"、ポート5432で待ち受けています
2020-07-07 09:35:07.359 JST [3884] LOG: ログ出力をログ収集プロセスにリダイレクトしています
2020-07-07 09:35:07.359 JST [3884] ヒント: ここからのログ出力はディレクトリ"log"に現れます。
.完了
サーバ起動完了
サーバー起動後、psql
コマンドでデータベースに接続することができました。
スタートメニューを右クリック→「コンピューターの管理」→「サービス」→「postgresql-x64-11 - PostgreSQL Server 11」を選択し、スタートアップの種類を「自動」にすると、毎回自動で起動するようになります。今回も「自動」になっていたのですが、起動に失敗していたようです。
参考
PostgreSQLに接続できず困った2
WindowsサービスとしてPostgreSQLを開始または停止する