2

我運行了rake db:migrate,我的所有遷移都運行了。然而,當我嘗試運行rake db:test:prepare我得到的錯誤:Rake數據庫待遷移的Rails數據庫:test:prepare

You have 1 pending migrations: 
    20130724211328 CreateGalleries 
Run `rake db:migrate` to update your database then try again. 

然後重新運行rake db:migrate給出了錯誤:

PG::Error: ERROR: relation "galleries" already exists... 

但在控制檯中,我可以如圖所示準確地創建和操縱的畫廊模式在CreateGalleries遷移中。該表格沒有被創建,甚至沒有在任何其他遷移中提及。

看來遷移運行得很好,但沒有註冊。任何想法如何解決這一問題?

編輯

我解決了這個與rake db:drop db:create db:migrate然後rake db:test:prepare,但我很高興地給予解決,任何人誰可以在什麼擺在首位引發的問題線索。

回答

1

我懷疑畫廊的遷移尚未正確執行。如果您100%確定桌面上的所有內容都正確,則可以將遷移版本升級到畫廊遷移版本。

要做到這一點,找到你的畫廊遷移的時間戳(在遷移文件前的14號,在這種情況下20130724211328),並插入此作爲新行插入表schema_migrations(這是後Rails的自動完成成功執行遷移)。

如果該表爲空,您也可以刪除表galleries並再次運行rake db:migrate。這樣你也可以確保你的遷移不會引發任何錯誤。

+0

什麼是不正確執行的例子?該模型在控制檯中完全按我的意願做出響應。是否還有其他無功能(例如跟蹤)操作可能會失敗,但仍然保持功能不變? – tyler

+0

一個例子是您的表格創建得很好,但是您在應該被索引的列的名稱中使用了小錯字(使用'add_index')。遷移沒有完成,但由於表在那裏,您無法再次運行它來完成它,而無需手動修復它。 –

+0

如果整個過程不運行,它是否不會回滾遷移並撤消更改? – tyler