2011-06-07 70 views
11

我正在開發部署我的第一個Rails應用程序,並且在這個過程中的某個地方,我拙劣地進行了遷移。當我嘗試將我的應用程序推送到生產服務器並運行rake db:migrate時,它在出現錯誤的地方失敗。如何「扁平化」Rails遷移?

現在,我是的方式懶得通過我的個人遷移來找出哪裏出了問題,所以我試圖避免這樣做。鑑於我目前的開發數據庫工作得很好,是否有辦法將當前模式「扁平化」爲單一的全面遷移?

據我所知,這是馬虎,我明白,我可能做了一個愚蠢的事情,首先打破遷移鏈。 (我可能直接在某處編輯數據庫模式,我現在明白這是一個禁忌)。但這是一個非常小的項目,而且我基本上是唯一參與的開發人員,所以我很樂意將這個問題掃描到地毯下如果可能的話。

有沒有辦法做到這一點?

感謝您借用您的專業知識。

回答

13

這是db/schema.rb文件的用途。如果您的遷移只有結構性更改,則可以運行rake db:schema:load而不是運行rake db:migrate來獲取表格的絕對結構。

+0

如果他在此期間更改了db,他可能需要先執行rake db:schema:dump。 – 2011-06-07 21:36:00

+0

像冠軍一樣工作。謝謝! – 2011-06-08 17:51:22

2

如果編輯模式直接將需要運行:

rake db:schema:dump 

這將需要無論是在數據庫中,並創建一個schema.rb文件。然後,您可以隨時運行rake db:schema:load。但是,這意味着你的遷移仍然很糟糕。您可以刪除所有這些文件並從schema.rb文件重新創建它們。

+0

謝謝凱爾!是的,我剛剛刪除了舊的遷移,現在我正在做生意。 – 2011-06-08 17:52:12