贯穿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