3 回答

TA貢獻1806條經(jīng)驗 獲得超8個贊
首先,您應(yīng)從數(shù)據(jù)庫中分離所有連接。默認(rèn)情況下,您使用開發(fā)環(huán)境。然后嘗試使用以下方法重置數(shù)據(jù)庫:
rake db:reset
rake db:reset任務(wù)將刪除數(shù)據(jù)庫并重新設(shè)置。這在功能上等同于rake db:drop db:setup。
這與運行所有遷移不同。它將僅使用當(dāng)前schema.rb文件的內(nèi)容。如果無法回滾遷移,則rake db:reset可能對您沒有幫助。要了解有關(guān)轉(zhuǎn)儲模式的更多信息,請參閱“模式轉(zhuǎn)儲和您”部分。Rails文件
如果技巧不起作用,請刪除數(shù)據(jù)庫,然后重新創(chuàng)建數(shù)據(jù)庫,遷移數(shù)據(jù),如果有種子,請播種數(shù)據(jù)庫:
rake db:drop db:create db:migrate db:seed
或簡而言之(從3.2開始):
rake db:migrate:reset db:seed
由于db:migrate:reset暗示刪除,因此創(chuàng)建和遷移數(shù)據(jù)庫。因為默認(rèn)的環(huán)境rake是development,所以如果您在規(guī)格測試中看到異常,則應(yīng)該為測試環(huán)境重新創(chuàng)建db,如下所示:
RAILS_ENV=test rake db:drop db:create db:migrate
或僅加載遷移的方案:
RAILS_ENV=test rake db:drop db:create db:schema:load
在大多數(shù)情況下,測試數(shù)據(jù)庫是在測試過程中播種的,因此db:seed不需要通過任務(wù)操作。否則,您應(yīng)該準(zhǔn)備數(shù)據(jù)庫(在Rails 4中已棄用):
rake db:test:prepare
然后(如果確實需要):
RAILS_ENV=test rake db:seed
在較新版本的Rails上,可能會出現(xiàn)錯誤ActiveRecord :: NoEnvironmentInSchemaError,因此只需在數(shù)據(jù)庫環(huán)境設(shè)置任務(wù)之前添加任務(wù):db:environment:set即可:
RAILS_ENV=test rake db:environment:set db:drop db:create db:migrate

TA貢獻1785條經(jīng)驗 獲得超4個贊
我遇到此錯誤,并且在研究后發(fā)現(xiàn)PG無法定義的錯誤關(guān)系用戶不存在錯誤的原因之一是:
此錯誤是遷移錯誤。您可能已經(jīng)創(chuàng)建了具有某些數(shù)據(jù)庫屬性的新模型。創(chuàng)建模型后,您必須將屬性遷移到Rails應(yīng)用模式。
如果使用本地計算機進行開發(fā),則可以使用命令
rake db:migrate
如果您使用的是heroku
heroku run rake db:migrate

TA貢獻1818條經(jīng)驗 獲得超8個贊
您的測試數(shù)據(jù)庫尚未準(zhǔn)備好用于rspec。
準(zhǔn)備用于rspec的測試數(shù)據(jù)庫以修復(fù)此錯誤
RAILS_ENV=test rake test:prepare
它將刪除,創(chuàng)建遷移并將其添加到測試數(shù)據(jù)庫
如果rake任務(wù)中止并顯示類似“ PG :: Error:ERROR”的消息:其他用戶正在訪問數(shù)據(jù)庫“ [your_db_test]”,請執(zhí)行此操作
RAILS_ENV=test rake db:migrate
- 3 回答
- 0 關(guān)注
- 1140 瀏覽
添加回答
舉報