2012-08-05 55 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