贯穿Michael Hartl众所周知的Rails教程,点击这个障碍。
我在迁移文件中有这个,由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
下的唯一文件)
答案 0 :(得分:1)
如果您真的想看看哪些迁移已经进入数据库,您可以检查您的应用数据库,有一个名为schema_migrations的表,在那里您可以看到每个迁移的唯一ID作为一行,例如你的迁移被称为:20130402190449_add_flagand_table.rb,你应该看到数字20130402190449作为该表的一行,希望我给你一些指导
答案 1 :(得分:0)
您可以做的是回滚几次迁移并重新运行。
您可以像这样回滚迁移
#rake db:rollback STEP=2
然后运行
#rake db:migrate
希望它能够运作
答案 2 :(得分:0)
我的问题是我进行了倒数第二次迁移,并且在添加新迁移后尝试重新运行该迁移。
我最终只是注释掉了它试图重新运行的代码,然后运行了rake db:migrate
,然后取消了对迁移代码的注释。
这样,架构不会中断,并且可以修复发生的任何错误。