貫穿Michael Hartl着名的Rails教程,擊中了這個障礙。Rake db:遷移不會忽略舊的遷移?
我有這樣的一個遷移文件,通過rails generate model
等創建:
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :name
t.string :email
t.timestamps
end
end
end
後來,我加入這個第二遷移文件:
class AddIndexToUsersEmail < ActiveRecord::Migration
def change
add_index :users, :email, unique: true
end
end
要嘗試和更新數據庫以包括新其中一個,我按照說明運行了rake db:migrate
,但是這給了我一個錯誤,告訴我我試圖創建一個已經存在的表,也就是說我明顯錯過了一些東西。
我是......應該刪除第一次遷移?這沒有任何意義。該怎麼辦?
(這些db/migrate
下的唯一文件)
它像你期望的那樣。第一次遷移時是否遇到任何其他錯誤?不知何故,遷移沒有被標記爲在數據庫中運行。這不應該發生。 –
我沒有得到任何其他錯誤,但我一直在弄清楚這一點,儘管我試圖保持完美的軌跡,我可能錯過了一些東西,並導致這種不經意間。是刪除模型並重新開始的唯一解決方案? – Aerovistae
像Alex提到的,這不應該發生。你可以'grep「create_table:users」db/migrate/*'來確保沒有兩次意外創建表遷移,就像一個完整性檢查一樣? – kikuchiyo