LoginSignup
7
6

More than 3 years have passed since last update.

PostgreSQLに接続できず困った

Posted at

herokuの為に初めてPostgreSQLを導入したら、
デフォルトのポート番号5432が既に使用中と表示されて、
しばらく接続出来ず苦労したので記録しておきます。

そのときの状態

該当のエラー文はもう残っていませんが、
要約するとポート5432は既に使用中という旨のエラーが表示され、
コマンドラインからも、もちろんSQLクライアントからもデータベースに触れなくなってしまいました。

ポート5432が使用中ということなので、
「タスクマネージャー」>「詳細」>「PID」を確認しましたが実行中のアプリはなく、
コマンドラインから「netstat」を使用しても5432には何もあてがわれていませんでした。

パソコンの再起動も試みましたが、依然として何故か5432が使用中で接続できません。

解決法

「pg_ctl -D "dataフォルダのフルパス" restart」 で直った。

PS C:\Users\hoge> pg_ctl -D "C:\Program Files\PostgreSQL\12\data" restart
pg_ctl: PIDファイル"C:/Program Files/PostgreSQL/12/data/postmaster.pid"がありません
サーバが動作していますか?
とにかくサーバの起動を試みます
サーバの起動完了を待っています....2019-12-23 22:04:24.510 JST [14488] LOG:  PostgreSQL 12.1, compiled by Visual C++ build 1914, 64-bit 
起動しています
2019-12-23 22:04:24.516 JST [14488] LOG:  IPv6アドレス"::"、ポート5432で待ち受けています
2019-12-23 22:04:24.541 JST [14488] LOG:  IPv4アドレス"0.0.0.0"、ポート5432で待ち受けています
....完了
サーバ起動完了

PostgreSQLはサーバーに接続中のときは、
「data」フォルダに「postmaster.pid」というファイルが存在し、
接続が切れたときにこのファイルは自動的に消えます。

そのファイルがないのでサーバーに接続中ではないと判断されるのですが、
とにかくサーバの起動を試みてくれるのでこれでいけました。

ローカルホストのアドレスについて

またそれとは別に、
flask+postgreSQL系の記事でURLに使うlocalhostは「192.168.1.101」になってることが多くて、
SQLAlchemyでそのまま真似て書いてエラー吐きました。

pythonの記述

import sqlalchemy
# 略
    URL = 'postgresql+psycopg2://ユーザー名:パスワード@192.168.1.101:5432/データベース名'
    ENGINE = sqlalchemy.create_engine(URL, echo=True)
    con = ENGINE.connect()

エラー

sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) could not connect to server: Connection refused (0x0000274D/10061)
        Is the server running on host "127.0.0.1" and accepting
        TCP/IP connections on port 5432?

ローカルホストのアドレスは、
「data」フォルダ内の「pg_hba.conf」に記述があって、
そこにあるアドレスを書いたら通りました。

あと「 pg_ctl -D "dataフォルダのフルパス" start」
でデータベースを起動するのを忘れずに!

アドレスが正しいのに、そもそもデータベースを起動してなくて触れなかった

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6