2017-05-05 97 views
0

我的第一個網站postgres上的Newb。我回滾了一次遷移,然後又進行了一次遷移。我離開第二次遷移空和軌道數據庫:遷移。回滾遷移的後果

一切看起來很正常,但不好的移民仍然坐在那裏,我並不特別喜歡它。我只是想知道如果我繼續下去會有什麼後果。

編輯:我的問題是 - 如果我回滾遷移,當別人拉下來,遷移是否會自然地經歷並且弄亂以下遷移?

回答

1

如果這是一個新的應用程序,並且您現在只在本地計算機上開發(特別是如果您單獨開發的話),我會回滾遷移(因爲數據庫中的數據在那個時候應該不要太重要,否則它的損失不應該造成任何傷害,並且我個人更喜歡在開發過程中不會有不必要的甚至錯誤/損壞的遷移文件),刪除損壞的遷移文件,創建正確的遷移並運行db:遷移並將更改推送到git。 所以(軌道5): 軌d遷移MigrationYouWishToDestroy 軌分貝:遷移

如果你是在一個團隊開發(和以前的移民已經被推到回購)和/或數據可以」正在不能通過回滾失敗,那麼你應該創建一個新的遷移,有效地撤銷你以前的遷移(壞的遷移)。這樣,你的同事只需要在更改之後運行db:migrate就可以了。否則,他們將不得不回滾他們的db,然後運行db:migrate

+0

我明白這一點。因此,如果我將其回滾,可以銷燬前面已經回滾的失敗遷移,然後正常進行新的遷移。我如何知道我目前正在進行哪種遷移? ...如果我回滾了,是否有辦法知道哪一個是最後遷移的遷移? – fdsaevad

+0

正確。您可以使用db回滾:rollback STEP = x其中x是您希望回滾的遷移數。這樣你就知道你有多少遷移,從而知道哪個遷移是最後遷移的。 –

+0

我感謝您的幫助!我試圖回滾失敗的遷移,並且在嘗試遷移它時給我提供了錯誤。如果我db:從這一點回滾STEP = 2(跳到它前面的那個),它是否會跳過失敗的遷移,然後我就可以銷燬它? – fdsaevad