2011-06-11 58 views
1

`postgresql_connection':未指定數據庫。缺少參數:數據庫。 (ArgumentError)任何與數據庫相關的rake任務「無數據庫」錯誤

我使用Homebrew安裝了postgresql,並且能夠使用我的本地用戶名作爲posgresql帳戶從命令行成功連接。但是,當我運行任何數據庫相關的rake任務時,我得到了上述錯誤,我似乎無法弄清楚爲什麼。

這是我的database.yml。 https://gist.github.com/3177f1f6b90a69e3829a

回答

3

不知道它是否只是一個粘貼錯誤,但縮進您的編碼,主機,池等過去適配器可能會導致問題。 YAML知道空白,並假定它們嵌套在適配器下。

+0

我認爲這只是一個粘貼錯誤。我將添加一個精確的database.yml文件的要點。 – 2011-06-11 13:43:06

+0

我無法在我的機器上重現此操作。我建議您嘗試將引用移動到每個環境的數據庫屬性下方,並查看是否有幫助。順便說一句 - 編碼拼錯了;) – dpb 2011-06-11 14:04:48

+0

奇怪的是,移動安裝的東西低於開發工作。我知道我以前用這種方式設置了我的database.yml文件,所以也許只是格式化問題? – 2011-06-11 14:40:51

0

有幾件事情浮現在腦海。

  1. 確保「PG」寶石在你的Gemfile
  2. 確保已運行捆綁安裝,並驗證PG寶石,的確是安裝
  3. 確保數據庫已通過耙已創建DB:創建
  4. 登錄到PG和驗證數據庫emorg_development存在

可能不是一個絕對的解決方案,但是這將有助於縮小其中的問題的來源。

+0

'gem list pg'顯示pg(v。0.11.0和0.10.0)都已安裝。它在我的gem文件中被列爲'gem pg'。 – 2011-06-11 14:37:48

+1

試圖通過rake任務創建數據庫結果https://gist.github.com/9ff92c5b748a6774c9fa。我通過postgresql手動創建了它,並且能夠成功連接到它。 – 2011-06-11 14:38:33

1

我遇到了這個問題以及Rails 3.1項目。乾燥的YML(如許多指南所建議的那樣)在Rails 3.1之前完全解析完畢後不再有效。 Rails 3.1將yml解析器從'syck'切換到'psych'。

此更改的後果之一 - 也許未知的更改爲Rails 3.1驗證database.yml - 是由於Eric M.使用的規範DRY導軌配置會觸發'Missing argument:database'錯誤,因爲:安裝程序正在被視爲一個rails環境,因此它未通過驗證,因爲它不包含數據庫的值。您可以通過創建任意任意環境來產生相同的錯誤,而忽略數據庫字段,以及運行rake db:version或任何數據庫敏感命令的問題。

有一些可能的解決方法(在我的優先順序排列):

  1. 廢料的設置部分,並使用你的開發環境作爲 模型變量替換,從而覆蓋是 不同領域測試和生產。通過這種設置,您只需要使用 環境,他們都可以在使用rake加載 時正確驗證,並且您仍然可以獲得非常乾燥的設置。 https://gist.github.com/1242642
  2. 添加一個虛擬數據庫參考共同引用的 現有數據庫https://gist.github.com/1242623,將讓 任何特定的數據庫覆蓋:在你的其他配置文件的設置。 這將使「設置」成爲有效的環境,但明確使用下一個 。
  3. 將Rails 3.1還原到舊的YAML解析引擎。我沒有測試過這個,但是有幾篇博客文章聲稱它可以工作,當然不愉快的副作用是你必須強迫Rails使用一個老式的引擎,這個引擎可能因爲某些原因而被丟棄。見例如​​。建議的步驟是在您的application.rb的頂部設置YAML::ENGINE.yamler = "syck"。您可能需要先登錄require 'yaml'

我在我的Rails 3.1應用程序中使用了第一個解決方案,沒有任何問題。感謝Eric M.提出這個問題(不知道你是否有Rails 3.1應用程序或只是一些文本gremlins,因爲顛倒了你的訂單,但不適合我)。