我在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中配置另一个设置吗?我已经尝试过指定一个主机和空密码,但这根本没有用。
答案 0 :(得分:1)
你的psql使用TCP连接到localhost,ruby显然是通过本地unix域套接字连接的。 osx上postgresql的unix域套接字问题是并非所有psql客户端库和数据库后端都同意套接字的位置。
如果你没有向psql传递-h选项,它将使用本地unix域套接字。它会有一个很好的改变。
有两种可能的解决方案,我无法向您提供详细信息,因为我不知道ruby on rails并且现在无法访问mac:
告诉ruby连接到localhost而不是使用unix域套接字。
确保ruby使用的客户端库(libpq)与您正在运行的后端匹配。