0

PostgreSQL データベースに対して Ruby on Rails を実行する Windows XP テスト エージェントをセットアップしようとしています。Windows 用の PostgreSQL 9.2 をデフォルト設定でインストールしました。ただし、サービス コントロール パネルからサービスを開始しようとすると、次のエラー メッセージが表示されます (どのユーザーに設定しようとしているかに関係なく)。

   The postgres-9.2 -PostgreSQL Server 9.2 service on Local Computer started and then stopped. Some services 
   stop automatically if they have work to do, for example, the Performance Logs and Alerts service.

コマンドラインから起動しようとすると(cmd.exeかgit bashかは関係ありません):

   E:\PostgreSQL\9.2\bin\pg_ctl.exe start  -D E:\PostgreSQL\9.2\data

それは主張します:

   server starting

ただし、起動に失敗します (rake db:migrate はサーバーが実行されていないと報告し、postgresql プロセスがタスク マネージャーに表示されず、サービスがサービス リストに停止していると表示され、

  E:\PostgreSQL\9.2\bin\pg_ctl.exe stop  -D E:\PostgreSQL\9.2\data

報告します

  pg_ctl: PID file "E:/PostgreSQL/9.2/data/postmaster.pid" does not exist Is server running?

pg_ctl を介してサーバーとして起動しようとしているとき:

  E:\PostgreSQL\9.2\bin\pg_ctl.exe runservice  -D E:\PostgreSQL\9.2\data

次の場合に失敗します。

  pg_ctl: could not start service PostgreSQL: error code 1063

編集:

pg_hba の内容:

 # TYPE  DATABASE        USER            ADDRESS                 METHOD
 local   all             all                all                  trust
 # IPv4 local connections:
 host    all             all                all                  trust
 host    all             all             127.0.0.1/32            trust
 # IPv6 local connections:
 #host    all             all             ::1/128                trust
 # Allow replication connections from localhost, by a user with the
 # replication privilege.
 #host    replication     all                all                 trust
 #host    replication     postgres        127.0.0.1/32           trust
 #host    replication     postgres        ::1/128                trust

以下のコメントに従って pg_log をチェックインします。

 2012-10-28 22:47:44 PDT LOG:  local connections are not supported by this build
 2012-10-28 22:47:44 PDT CONTEXT:  line 78 of configuration file "E:/PostgreSQL/9.2/data/pg_hba.conf"
 2012-10-28 22:47:44 PDT FATAL:  could not load pg_hba.conf

78行目は

 local   all             all                all                  trust

サービスとして実行している場合も同じエラーが発生します (pg_ctl runservice を使用する場合でも、サービス コントロール パネルから使用する場合でも)。ただし、pg_ctl start は問題なく postgres を開始するようになりました。

私は「十分」で行きます

PS: イベント ログのエントリには、「サーバーの起動を待ってタイムアウトしました」とだけ表示されます。

4

2 に答える 2

5

UPDATE質問への編集後:

pg_hba.confから始まる行を削除しますlocal。これらは、PostgreSQL がサポートしていない UNIX ソケット接続に関連しています。その後、他に問題がなければ、PostgreSQL を起動できるはずです。おそらく、接続がサポートさpg_hba.confれている Mac OS X または Linux 上の PostgreSQL について説明しているサイトからコピーして貼り付けたものです。local

修正後も Pg の起動に失敗する場合pg_hba.confは、ログをもう一度確認して、他に何が問題になっているのかを確認してください。

ところで、一般的に、PostgreSQL をサービスとして実行することもpg_ctl、同じデータ ディレクトリから経由することもお勧めしません。特に Windows では、解決するのが困難で面倒なファイル システムのアクセス許可の問題に遭遇する可能性があります。


@mvp の提案に加えて、Administrators グループのメンバーであるユーザーの下で PostgreSQL を起動しようとしている可能性があります。これは許可されておらず、失敗します。私はその方針に同意しませんが、現時点ではそうです。

デフォルトでは、9.2 は NetworkService の下で実行するように設定されているため、問題にはなりません。別のユーザー アカウントで実行するように構成した場合、これが問題になる可能性があり、手動で実行するときにも問題になる可能性があります。

手動で開始する場合、データ ディレクトリへのファイル システム権限がない可能性が高くなります。

ところで、E:\FAT32 の場合は、問題があります。FAT32 はサポートされていません。NTFS を使用する必要があります。

暗闇の中で突き刺すのではなく、実際にサーバーのログインE:\PostgreSQL\9.2\data\pg_logとイベント ビューアを見て、起動に失敗した原因を確認する必要があります。

于 2012-10-29T06:29:14.947 に答える
3

許可に問題があるはずです。Windows 上の PostgreSQL は、postgres ユーザーとして実行したいと考えています。インストーラは自動的にパスワードを作成し、新しいパスワードを割り当てます。

これに対する解決策はほとんどありません。このデータベースをインストールしたばかりの場合、最も簡単な解決策は、Postgres をアンインストールし、( 経由でcontrol userpasswords2) ローカルの postgres ユーザーを削除し、最後に Postgres を再度インストールすることです (このボックスに対する管理者権限があることを確認してください)。幸運を!

于 2012-10-29T05:59:32.843 に答える