我一直在通过rake db:migrate。在/ rails中迁移数据库时遇到了麻烦。
我的迁移目前看起来像这样:
class CreateArticles < ActiveRecord::Migration
def change
create_table :articles do |t|
t.string :title
t.text :subtitle
t.string :slug
t.text :body
t.integer :publish, limit: 1, default: 0
t.timestamps
end
end
end
但是,如果我从中删除了一个列,甚至添加或修改了一个列,则rake db:migrate命令不执行任何操作。我可以迁移它的唯一方法是运行类似:
rake db:migrate VERSION=20080906120000
但即使这样也很有气质,所以大多数时候我需要使用
来重置数据库db:drop
db:create
然后正常运行迁移。基本上db:migrate只能在删除和创建数据库后第一次工作。
在运行迁移之前,我还尝试过回滚。
这远非理想,所以我很感激任何帮助。
(我意识到有类似的问题但是他们的所有问题都在数据库重置后得到解决)
答案 0 :(得分:2)
您需要运行迁移down
,然后再次运行up
,这是通过redo
任务完成的。试试这个:
rake db:migrate:redo VERSION=20080906120000
编辑:如果你想要保留在这个表中的数据,最好进行新的迁移以删除列或你想做的任何事情,因为上面将删除并重新创建表,擦除数据。过程