2017-05-05 55 views
0

在嘗試解決我遇到的NoMethodError時,我在某處讀取運行rake db:reset可能有助於解決問題的方法。我是Rails的新手,並且在不知道這會做什麼的情況下犯了這個錯誤。當我運行它,它成功刪除我的開發數據庫(PosgreSQL),但隨後打了一個致命的錯誤有以下消息:rake db:通過刪除數據庫中途重置失敗

Dropped database 'development' 
FATAL: Peer authentication failed for user "postgres" 
Couldn't drop database 'test' 
rake aborted! 
PG::ConnectionBad: FATAL: Peer authentication failed for user "postgres" 

Tasks: TOP => db:drop:_unsafe 

我試圖手動跌落測試數據庫並重新運行rake db:reset,但是發生了同樣的錯誤。所以我丟失了我在開發數據庫中的數據,並且只能停留在空的生產數據庫中。

我知道這可以通過編輯pg_hba.conf文件來解決,但我的應用程序正在我學校的高性能羣集(Linux VM)上運行,並且我沒有該文件的寫入權限。我不明白的是爲什麼它能夠放棄我的開發數據庫,​​但沒有其他的。

我還有我的seeds.rbschema.rb文件,那麼有可能重建我的數據庫而不會進一步搞亂事情嗎?或者有什麼方法可以解決直接影響復位命令的問題嗎?

+0

你可能想看到這個https://stackoverflow.com/questions/10301794/difference-between-rake-dbmigrate-dbreset-and-dbschemaload?rq=1 – fangxing

回答

0

我關於認證失敗想通了我的問題。當我一個星期前第一次建立我的數據庫時,我已將host:localhost添加到我的database.yml文件中以規避相同的問題。但是,我只是將它添加到我的開發數據庫中,因爲這是我到目前爲止需要訪問的全部內容。將host:localhost添加到文件中的其他兩個數據庫已解決了我的問題。

2

rake db:reset運行db:dropdb:setupdb:drop刪除當前RAILS_ENV的數據庫。如果未設置RAILS_ENV,它將嘗試刪除開發和測試數據庫。

嘗試運行之前設置你的RAILS_ENV:

RAILS_ENV=development rake db:reset

+0

我試過了,但仍然像以前一樣得到相同的錯誤。 –

+0

嘗試使用'RAILS_ENV = development'而不是'RAILS_ENV = dev' – zachdb86

相關問題