2012-08-05 26 views
0

我在运行PostgreSQL中ActiveRecord gem tests麻烦,我得到以下错误:权限被拒绝运行ActiveRecord的宝石测试PostgreSQL中

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 contributing guide的建议运行rake postgresql:build_databases时出现相同的错误。

铁轨/ ActiveRecord的/测试/ config.yml文件有以下设置(所有我已经改变是用户名):

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

难道还有其他设置,我需要在config.yml配置?我试着指定一个主机和空密码,但这根本没有帮助。

回答

1

您的psql正在使用TCP连接到localhost,ruby显然是通过本地unix域套接字连接的。 osx上postgresql的unix域套接字问题是,并不是所有的psql客户端库和数据库后端都对套接字的位置达成一致。

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

没有关于这两者我无法给你细节,因为我不知道Ruby on Rails的,并没有马上进入到Mac两种可能的解决方案:

  1. 告诉红宝石连接到本地主机而不是使用unix域套接字。

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

+0

我想这是这种情况,这就是为什么我试图指定主机。我认为发生了什么事是'rake postgresql:build_databases'忽略了主机选项,并且我在这之间来回切换并尝试运行测试。仍然无法运行该rake任务,但测试运行良好。谢谢! – 2012-08-05 15:13:04