0
我已經運行了幾次長時間的遷移。就像我有代碼的某些部分更新了很多記錄並從幾分鐘到幾小時一樣運行。Rails:取消(ctrl + c)長時間運行遷移時會發生什麼?
我從來沒有試圖取消(ctrl + c)的遷移,因爲我不知道該遷移會發生什麼。它會知道遷移被取消了嗎?該遷移和我的應用會發生什麼?如果取消後會發生什麼,我運行rake db:再次遷移?
我的一個腳本看起來是這樣的:
def up
add_column :foo, :bar, :string
Foo.all.each do |f|
f.bar = if f.x
'foo'
else
'bar'
end
f.save
end
remove_column :foo, :something
end
def down
* reverse of up
end
我使用Postgres的爲好。
Hrmn ...因爲現在,我又遇到了這個問題。上面提到的腳本(編輯擴展更新部分),當我檢查psql時,我可以看到我的一些記錄已經更新。這是否意味着如果我取消它,它不會退回所有這些記錄? – index
我從來沒有嘗試過這個,所以我不能肯定地說。它應該,如果交易像他們應該回滾。但是獨立於實際的實現,我不確定一個ctrl-c是否會制動整個事件並阻止回滾。在這種情況下,您將不得不手動回滾一些數據庫工具。可能會變得棘手。 –
你知道實際情況,當我提到我上面的「更新」評論時,我想我做錯了什麼。我再次檢查了正確的查詢,我認爲它沒有真正運行。所以我取消了,編輯了更新(將它移動到別的地方)並再次運行遷移,它確實運行了這個特定的遷移,所以我想它已經回滾了,或者它沒有爲該遷移事務運行提交。謝謝! – index