簡體   English   中英

在運行rake db:migrate VERSION = 0並重新進行遷移之后,我丟失了數據庫中的所有內容

[英]After I ran rake db:migrate VERSION=0 and redid the migration, I lost everything in my database

在嘗試運行rake db:migrate之前,我遇到了一個稱為列重復的錯誤,因此我改為運行rake db:migrate VERSION = 0,然后再次運行rake db:migrate。

基本上,我正在清理以前的遷移,並通過從VERSION = 0運行新遷移,終於能夠完成我的掛起遷移,並且列復制再次沒有問題。

但是,我執行的命令實際上清除了所有先前的數據。 有沒有辦法找回我丟失的東西? 如果存在列重復錯誤,那么運行db:migrate的最安全方法是什么? 我真的不想回到VERSION = 0

有沒有辦法找回我丟失的東西?

您刪除了數據庫表並重新創建了它。 該表中存儲的所有數據也被刪除並丟失。 取回數據的唯一方法是從備份還原。 您最近有數據庫備份嗎?

如果存在列重復錯誤,那么運行db:migrate的最安全方法是什么?

如果您的遷移有錯誤,請修復該遷移並重新運行。 在您的示例中:如果遷移失敗並顯示一條錯誤消息,提示您存在重復的列,則只需刪除嘗試添加重復列的代碼,然后重新運行遷移即可。

Rails遷移必須遵循嚴格的流程。 假設您有重復的列。 您應該編寫另一個遷移文件以刪除該重復的列。 當你跑了

rails db:migrate VERSION = 0

它再次創建數據庫非常明顯,以至於數據將丟失。

因此,請確保在Rails中使用的數據庫中的所有更正應遵循創建新遷移而不是對其進行編輯的嚴格過程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM