web-dev-qa-db-ja.com

PostgreSQL 9.2.4(Windows 7)-サービスが開始されない、「pg_hba.confを読み込めませんでした」

Postgres9.2.4をWindows7のサービスとして実行しようとしています。postgresをインストールした後、サービスは正常に実行されていました。ただし、postgresを別のプログラムのサーバーとして設定した後、サービスの実行が停止しました。今すぐサービスを開始しようとすると、次のようなメッセージが表示されます。

「postgresql-x64-9.2-ローカルコンピューター上のPostgreSQLサーバー9.2サービスが開始され、その後停止しました。一部のサービスは、他のサービスまたはプログラムで使用されていない場合、自動的に停止します。」

データベースサーバーを使用する必要があるプログラムを実行しようとすると、次のエラーが発生します。

「本番データベースにログインまたは作成しようとしたときに問題が発生しました。詳細:サーバーに接続できませんでした。リモートソケットに接続できませんでした。アプリケーションを閉じる必要があります。」

同じプログラムを開いているときに、このエラーが発生したこともあります。

「本番データベースにログインまたは作成しようとしたときに問題が発生しました。詳細:致命的:pg_hba.confを読み込めませんでした。アプリケーションを閉じる必要があります。」

ローカルシステムアカウントとしてログオンしたサービスと、自分のアカウント(postgresサービスのプロパティ内)を実行しようとしましたが、役に立ちませんでした。また、コンピューターを再起動してみました。オンラインで多くのトラブルシューティングを行った後、チェックするのが良いことはpg_logファイルであることを学びました。最新のpg_logエントリの内容は次のとおりです。

2013-05-29 14:59:45 MDT LOG:  database system was interrupted; last known up at 2013-05-29 14:58:01 MDT
2013-05-29 14:59:45 MDT LOG:  database system was not properly shut down; automatic recovery in progress
2013-05-29 14:59:45 MDT LOG:  record with zero length at 0/175BB98
2013-05-29 14:59:45 MDT LOG:  redo is not required
2013-05-29 14:59:45 MDT LOG:  database system is ready to accept connections
2013-05-29 14:59:45 MDT LOG:  autovacuum launcher started
2013-05-29 15:07:00 MDT LOG:  local connections are not supported by this build
2013-05-29 15:07:00 MDT CONTEXT:  line 1 of configuration file "C:/PostgreSQL/data/pg_hba.conf"
2013-05-29 15:07:00 MDT FATAL:  could not load pg_hba.conf
2013-05-29 15:07:00 MDT LOG:  local connections are not supported by this build
2013-05-29 15:07:00 MDT CONTEXT:  line 1 of configuration file "C:/PostgreSQL/data/pg_hba.conf"
2013-05-29 15:07:00 MDT FATAL:  could not load pg_hba.conf
2013-05-29 15:09:03 MDT LOG:  received fast shutdown request
2013-05-29 15:09:03 MDT LOG:  aborting any active transactions
2013-05-29 15:09:03 MDT LOG:  autovacuum launcher shutting down
2013-05-29 15:09:03 MDT LOG:  shutting down
2013-05-29 15:09:03 MDT LOG:  database system is shut down

Pg_hba.confファイルに問題があるようです。これは次のようになります。

local all all trust
Host all all 127.0.0.1 255.255.255.255 trust
Host all all 0.0.0.0 0.0.0.0 trust

オンラインの多くの提案に従って、私はいくつかの異なる選択肢(ホストすべてすべての信頼/ホストすべて127.0.0.1/32信頼/ホストすべて192.168.0.100/24信頼など)にトップラインを編集してみました。ログファイルはローカル接続がpostgresでサポートされておらず、その行を指していると言っていたので、これは私には理にかなっています。しかし、私の変更はどれも効果がありませんでした。変更するたびにコンピューターを再起動しようとしましたが、何の違いもありませんでした。

Pg_hba.confファイルが通常どのように見えるかの例を検索したところ、例は私のファイルとは少し異なって見えました。 PostgreSQLプログラムファイルには、pg_hba.confに加えて、オンラインで見つけた例によく似た「20130529-150444-old-pg_hba.conf」ファイルもあることに気づきました。このファイルには、これらの最後の数行の前に数行のコメントがあります。

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
Host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
Host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#Host    replication     postgres        127.0.0.1/32            md5
#Host    replication     postgres        ::1/128                 md5

これが元のpg_hba.confファイルであり、新しいファイルを古いファイルの内容に置き換えると、postgresが再び機能し始めることを期待していました。そのような運はありません。以前に述べたエラーが消えたか、別のものに変更されたかどうかを確認するために、pg_logにさらに多くのエラーファイルが記録されることを望んでいましたが、これ以上ファイルは記録されていません。

私は数日間オンラインでトラブルシューティングを行っていますが、何も機能していません。長い質問をして申し訳ありませんが、私は徹底してすべての関連情報を含めたかったのです。誰かがこの問題に光を当てたり、提案をしたりしていただければ幸いです。

9
user2437443

ローカルエントリは、Windowsマシンではサポートされていません。 E.20.3.1.3。認証 を参照してください。

Unixソケット接続をサポートしていないプラットフォームでpg_hba.confのローカル行を拒否する(Magnus Hagander)

以前は、そのような行は黙って無視されていましたが、これは驚くべきことかもしれません。これにより、他のサポートされていないケースのように動作します。

構成を次の場所から変更します。

local  all    all     trust

に:

Host   all    all   127.0.0.1/32  trust
Host   all    all   ::1/128       trust

詳細については、 19.1。pg_hba.confファイル を参照してください。

6
jim31415

Postgresqlバージョン8.3をWindows7マシンにインストールした後、この問題が発生しました。最初は正常に動作していましたが、突然停止しました(おそらくWindowsの更新後)。多くの暫定的な権限の変更が行われましたが、それは機能しませんでした。数か月後、空のファイルに問題が見つかりましたが、その間にデータが含まれているはずです。次のパスを確認します:C:\ Program Files(x86)\ Postgresql\8.3\data \(8.3はバージョン番号に置き換える必要があります)。 Postmaster.pidファイルが空かどうかを確認します(ワードパッドまたはメモ帳を使用して開きます)。空の場合は、名前を_Postmaster.pid(または他の名前)に変更します。 [スタート]メニューに移動し、コマンドボックスでservices.mscと入力します。Enterキーを押します。Postgresqlデータベースエントリを見つけます。ダブルクリックします。[スタート]ボタンをクリックします。サービスが開始されると、新しいPostmaster.pidが作成されます(一部のデータを含む)。確認できます。上記のパスで。

イベントビューアの分析から得られた良いヒント:Windowsエクスプローラを開き、[コンピュータ]を選択し、[管理]を右クリックして、[イベントビューア]を選択し、[管理イベントの概要]が読み込まれるのを待って、[エラー]ノードを開き、検索します。 「ソース」列の「PostgreSQL」エントリをダブルクリックします。 Postmaster.pidファイルに偽のデータを通知するヒントがありました。

この情報がお役に立てば幸いです。乾杯!エド。

5
Eduardo

このような場合、最良の方法はOSログを分析することです。 Windowsの場合は、「イベントビューア」->「アプリケーション」を確認してください。このようなエラーは、さまざまな理由で発生する可能性があります。私の場合、postgresはすでに実行されていました。私はその情報をWindowsログで見つけました。

2
bluelurker

私も同じ問題を抱えています。私のために働いたのは:

  1. Postgresql.confファイルを開きます(通常、C:\ Program Files\PostgreSQL\9.4\dataにあります)。
  2. 行番号147(shared_preload_libraries = '$libdir/plugins/plugin_debugger.dll'
2
Oliver Drummond

問題は、win7でのこのpostgresバージョンがローカル接続を処理できないことです。ローカルコンピューターで非常に緊急にpgを操作する必要があったため、セキュリティについてあまり気にしなかったため、これはライブ環境に最適なソリューションではない可能性があります。しかし、私のローカルPCはそれで十分でした。

コメントされていない他のすべての行をpg_hba.confから削除し、次の行のみを残しました。

Host    all             all             ::1/0                 trust

この後、コマンドライン経由で接続できました。

マニュアルにこの問題が記載されていない理由がわかりません。多くの人がこれに問題を抱えていると私は確信しています。

2
halmai

それで、簡単な免責事項、私は今Linux上でPostgreSQLを実行しています。しかし、数年前、私はそれをWindowsで実行しました。そして、私はこの問題を覚えているようです。手がかりはこの行にあると思います:

2013-05-29 15:07:00 MDT LOG:  local connections are not supported by this build

ローカル接続はUnixのものです。 Windowsを使用しています。したがって、「このビルドではサポートされていません」。ローカルをローカルホストに変更して再起動してみてください。これが ここにリンクの説明を入力してください Postgresメーリングリストに投稿された同様の問題へ:

0
David S

Postgresql.confを間違えました。私はやった

max_prepared_transactions = 16*max_connections  # zero disables the feature

このファイルの前にあるところは、

max_connections=100

これは実行できず、次のように機能します。

max_prepared_transactions = 1600    # zero disables the feature
0
ericj

「ローカルコンピュータのサービスが開始されてから停止しました。他のサービスやプログラムで使用されていない場合、一部のサービスは自動的に停止します。」

次に、ローカルコンピュータでサービスを開始してから停止する方法を説明します。他のサービスやプログラムで使用されていない場合、一部のサービスは自動的に停止します。

この問題を解決するには、2つの方法があります

最初の方法

スタート->実行-> Services.mscと入力し、Enterボタンをクリックすると、コンピューター内のすべてのサービスが表示されます。その後、サービスを選択して右クリックし、[プロパティ]に移動します。

その後、[ローカルシステムアカウント]を選択して[ログオンの選択]タブを開き、[OK]をクリックします。問題は解決します。

0
Lashe