我刚安装了设备,所以除了一个用户(我)之外,表上没有任何数据。
我再次重新做数据库所以我放弃了所有这些。我做了rails g scaffold
来生成6个新模型和控制器并且做了rake db:migrate
在我的/db/migrate
目录中,我有一个文件名为20130603211907_devise_create_users.rb
问题在于:如果我rake db:migrate:down VERSION=20130603211907
,它将删除所有新的迁移。
如何重新运行迁移,而不删除所有较新的迁移?
答案 0 :(得分:42)
rake db:migrate:redo VERSION=xxxxxxx
它将运行向下然后向上运行。您可以暂时注释掉向下步骤。
答案 1 :(得分:7)
感谢大家的帮助。这对我有用:
警告:这些命令将删除数据库中的所有数据!
rake db:drop
rake db:create
rake db:migrate
答案 2 :(得分:6)
如果您在本地进行开发,从模型中删除所有数据并不会有什么坏处,您只需drop
您的数据库,然后create
&从头开始migrate
:
答案 3 :(得分:6)
您可以致电rake db:migrate:redo VERSION=20130603211907
,这将重新运行指定的版本。
此外,如果您的迁移只应在上传迁移链时运行(例如数据转换,复制等),则可以指定
def up
do_something
end
和def down(下降),def change(双向)方法。
要暂时禁用迁移,只需将方法def up
重命名为def up_
,处理迁移链时将忽略该方法。
答案 4 :(得分:3)
rake db:migrate:up VERSION=20090408054532
这会将所有文件迁移到VERSION = 20090408054532