2013-06-19 122 views
0

因此,我在工作中跳到了這個Rails項目上,我有我自己的本地副本。我試圖運行測試來看看結果是什麼,但是耙子回來抱怨說我有5次優秀的遷移要做。我第一次嘗試運行rake db:migrate,但由於遷移嘗試創建已存在的表,因此無法運行。那時我意識到這些遷移已經運行,但由於某種原因,它認爲它目前處於較老的遷移中。在Rails中,如何在不執行數據庫遷移的情況下進行數據庫遷移?

是否有任何方法讓Rake在遷移歷史中向前移動而不進行回滾並重新遷移遷移?

+0

出於興趣,您可以嘗試在您的命令提示符下執行以下'rake db:drop && rake db:create && rake db:migrate' – David

+0

運行'rake db:test:prepare',到與開發數據庫相同的遷移 – house9

回答

1

您可以更新schema_migrations表以獲得您想跳過的遷移編號。這是桌面導軌用來跟蹤已經運行的遷移。

select * from schema_migrations 

會給你像

version  
---------------- 
20121026165533 
20121026183631 
20121212144141 
20130205205009 

添加你想跳過這個表遷移數。

0

你既可以:

  1. 刪除遷移問題,制定一套新的遷移來取代他們的位置(危險)

  2. 執行耙分貝:重置你所說的。

我只會建議1,如果你是該項目的唯一開發者。但實際上,你的遷徙和種子應該處於這樣一種狀態,以至於不能保證這一點。

我會懇請您採取#2,因爲#1可能會導致問題落空。您的數據庫副本應該代表您將運行rake db時得到的結果:重置。