質問: [環境] postgresql 9.5.4 windows 7 [問題] postgresql.conf や pg_hba.conf の内容を変更したため pg_ctl reload にて反映させようとしたところ、 「pg_ctl: PIDファイル"[PGDATAのパス]/postmaster.pid"がありません サーバが動作していますか?」の応答でreloadできなかった。 --- やりたかったのは * psqlのパスワードを忘れたためpg_hba.confを書き換えてパスワードなしで入れるようにした(参考:Postgresでパスワードを忘れた場合の対策 * PGDATAの場所がデフォルト(多分、PostgreSQL/[version]/data配下)と違うのでpostgresql.conf内の該当箇所のコメント解除とパス書き換え * 設定再読み込み後パスワードなしで入る なので、今回のことで躓いたまま進まないなら再インストールでよいかと思っています(psqlに入りたいだけ)。 postmaster.pidがありませんというようなことを言われる状況と原因がよくわからず気になります (pidが残っていて怒られることはよくあると感じるが、ありませんというのがどういう怒り方なのかがわからない)。ありませんと怒られているように、postmaster.pidというファイルはどこにもありません。 サービス postgresql-x64-9.5 は起動しています。 ご助言頂けたらと思います。 --- [進捗] タスクマネージャには何もいなかったのでtasklistしてでてきたpostgres.exe(7つ)を`taskkill /PID [pid] /F`したが、一つ消すと7個とも消えた。その後サービスも停止状態になった。サービス開始すると7個できたのでそういうもののようだ? 相変わらずpostmaster.pidはどこにもなく、よくわからない。 **!前提から覆るレベルで設定ミスがあったので、修正してリロード及びpsqlログインすることができました。後程回答コメントしてクローズします**
回答: pidファイルが意図通りのPGDATA内になかったため、どこにもないかどうかをdosで`dir /A-D /B /S | findstr "postmaster.pid"`で確認すると、まったく見落としていたところに存在していた(どこにもありませんと書いていましたが確認不足でした)。 もともと自分でPGDATAの場所として指定していたのは、去年利用していた9.4のもので、9.5の設定類は別の場所にあったことがわかった。 そこで再度やりたかったことを9.5のPGDATAの中で実施し、環境変数も9.5の方に向けた。 改めて管理者権限で`pg_ctl reload`すると問題なく「サーバにシグナルを送信しました」の応答(管理者権限でやらないと「pg_ctl: リロードシグナルを送信できませんでした。(PID: XXXX): Operation not permitted」といわれる)。 改めて`psql -U postgres`パスワードなしで入れたので、パスワードを新規に設定しておく。 `postgres=# alter role postgres with password '[PASSWORD]'` 終了してもう一度設定ファイルからパスワード認証できるように変更して再度リロード→無事パスワード付ログイン完了 修正依頼のやりとりにて調査のあたりがつけられました(ひとりで悩むと視野が狭まる)。ありがとうございました。