0

PostgreSQLでActiveRecordgemテストを実行するのに問題があり、次のエラーが発生します。

rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb:1473:in `initialize': could not connect to server: Permission denied (PG::Error)
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?

psql -h localhostデータベースなどを使用してサーバーに接続できます。postgresqlサーバーにはhttp://postgresapp.com/を使用しています。Railsの寄稿ガイドrake postgresql:build_databasesで提案されているのと同じエラーが実行時に発生します。

rails / activerecord / test / config.ymlファイルには次の設定があります(変更したのはユーザー名だけです)。

  postgresql:
    arunit:
      username: pete
      min_messages: warning
    arunit2:
      min_messages: warning
      username: pete

config.ymlで構成する必要のある別の設定はありますか?ホストと空のパスワードを指定しようとしましたが、まったく役に立ちません。

4

1 に答える 1

1

psqlはTCPを使用してローカルホストに接続しています。rubyは明らかにローカルのUNIXドメインソケットを介して接続しています。osx上のpostgresqlのunixドメインソケットの問題は、すべてのpsqlクライアントライブラリとデータベースバックエンドがソケットの場所について合意しているわけではないことです。

-hオプションをpsqlに渡さない場合、ローカルのunixドメインソケットを使用します。それが失敗するであろう良い変化があります。

考えられる解決策は2つありますが、どちらもRuby on Railsがわからず、現在Macにアクセスできないため、詳細を説明できません。

  1. UNIXドメインソケットを使用する代わりにローカルホストに接続するようにrubyに指示します。

  2. rubyが使用するクライアントライブラリ(libpq)が、実行しているバックエンドと一致していることを確認してください。

于 2012-08-05T14:23:43.543 に答える