0

我在 PostgreSQL 中运行ActiveRecord gem 测试时遇到问题,并且收到以下错误:

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和创建数据库等连接到服务器。我使用http://postgresapp.com/作为 postgresql 服务器。按照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 连接到 localhost,ruby 显然是通过本地 unix 域套接字连接的。osx 上 postgresql 的 unix 域套接字的问题在于,并非所有 psql 客户端库和数据库后端都同意套接字的位置。

如果您不向 psql 传递 -h 选项,它将使用本地 unix 域套接字。有一个很好的改变将失败。

有两种可能的解决方案,我无法为您提供详细信息,因为我不知道 ruby​​ on rails 并且现在无法访问 mac:

  1. 告诉 ruby​​ 连接到 localhost 而不是使用 unix 域套接字。

  2. 确保 ruby​​ 使用的客户端库 (libpq) 与您正在运行的后端匹配。

于 2012-08-05T14:23:43.543 回答