chocolatranran
@chocolatranran

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

【PostgreSQL】pg_ctl start ・・・→pg_ctl: could not start  server Examine the log output.と表示され起動できない

解決したいこと

pg_ctl start -D /Applications/dataをターミナルに入力し、PostgreSQLが起動することです。
初心者ですのでおそらく基本的な質問になっておりますが、ご協力お願いいたします。

発生している問題・エラー

下記がターミナルの状況です。
スクリーンショット 2021-04-29 17.06.21.png
下記に添付画像の文字を貼り付けました。
waiting for server to start....2021-04-29 16:52:48.616 JST [31720] LOG: starting PostgreSQL 13.2 on x86_64-apple-darwin19.6.0, compiled by Apple clang version 12.0.0 (clang-1200.0.32.29), 64-bit
2021-04-29 16:52:48.618 JST [31720] LOG: could not bind IPv6 address "::1": Address already in use
2021-04-29 16:52:48.618 JST [31720] HINT: Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
2021-04-29 16:52:48.618 JST [31720] LOG: could not bind IPv4 address "127.0.0.1": Address already in use
2021-04-29 16:52:48.618 JST [31720] HINT: Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
2021-04-29 16:52:48.618 JST [31720] WARNING: could not create listen socket for "localhost"
2021-04-29 16:52:48.618 JST [31720] FATAL: could not create any TCP/IP sockets
2021-04-29 16:52:48.619 JST [31720] LOG: database system is shut down
stopped waiting
pg_ctl: could not start server
Examine the log output.

情報

/Applications/dataにはpg_hba.confなどのファイルが格納されいます。
Mac10.15.7を使っています。
initdb (PostgreSQL) 13.2を使用しております。

自分で試したこと

pg_ctl start のみにすると
pg_ctl: no database directory specified and environment variable PGDATA unset
Try "pg_ctl --help" for more information.
と表示されます。

最後に

私まだ勉強始めたばかりの初心者です。
足りない情報が多々あると思います。
ご指摘していただければ、情報を追加しますので
よろしくお願いいたします。

0

1Answer

エラーメッセージは「ローカルホストのポート番号 5432 がすでに使われているので、postgresql が起動できなかった」というものです。

postgresql は、起動すると(デフォルトだと) 5432 ポートで、クライアントからの要求を待ち受けるようになるのですが、それができないので、起動に失敗したということです。

可能性はいくつかあって

  • ついさほどまで 5432 ポートが使われていて、まだ再利用できない(数分まって再実行すれば起動できるはず)
  • 別のプログラムが 5432 ポートを使っている(可能性は少ないと思う)
  • すでに postgresql サーバが起動している(多分、一番可能性は高い)

ぐらいだと思います。

おそらく、なんどやっても起動できないということは、すでに postgressql が起動しているのではないでしょうか?

psql などで postgresql につなげるか確認してみてはいかがでしょうか?

1Like

Comments

  1. @chocolatranran

    Questioner

    エラーメッセージの解説ありがとうございます。
    また、親切に教えていただきありがとうございます。

    確認してみました。
    >$ psql -U postgres ターミナル入力
    >Password for user postgres: パスワード入力
    >psql (13.2)
    >Type "help" for help.

    >postgres=#
    上記の動きはできております。起動はできたと言うことで良いのでしょうか。

    >$ pg_ctl status -D /Applications/data ターミナル入力
    >pg_ctl: no server running
    上記を確認すると動いていないと表示されていると思いまして、
    起動できていないと判断しておりました。
  2. postgresql が起動していることは確かだと思います。しかし、おそらく違うデータディレクトリで動作しているように思われます。

    pg_ctl status では、指定したデータディレクトリで動作しているかの判定をしています。
    違うデータディレクトリのデータファイルを使って起動している場合には、起動していないと判断します。
    (以下のマニュアルを参照。ヒットした日本語版というだけで、バージョンは適当ですが)

    https://www.postgresql.jp/document/9.1/html/app-pg-ctl.html

    > statusモードは指定したデータディレクトリでサーバが起動しているかどうかを確認します。 起動している場合はPIDと、サーバを起動する時に使われたコマンドラインオプションを表示します。

    以前に手動で起動しているのであれば、起動しているプロセスを終了後(わからなかったらマシンの再起動後でも)、再度手動で起動してみるとよいかと思います。

    あるいは、自動で起動する設定にしているなら、自動起動の設定が正しいかを確認する(そのまま自動起動で使う)、あるいは自動起動をやめる(毎回、手動で起動する)とよいと思います。

Your answer might help someone💌