权限被拒绝在PostgreSQL中运行ActiveRecord gem测试

时间:2012-08-05 14:06:04

标签: ruby-on-rails macos postgresql

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

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服务器。根据{{​​3}}的建议运行rake postgresql:build_databases时出现同样的错误。

rails / activerecord / test / config.yml文件具有以下设置(我更改的是用户名):

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

我需要在config.yml中配置另一个设置吗?我已经尝试过指定一个主机和空密码,但这根本没有用。

1 个答案:

答案 0 :(得分:1)

你的psql使用TCP连接到localhost,ruby显然是通过本地unix域套接字连接的。 osx上postgresql的unix域套接字问题是并非所有psql客户端库和数据库后端都同意套接字的位置。

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

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

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

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