是否有快速rake db:rollback命令用于所有迁移?Rake db:migrate - 如何撤消所有迁移并重做它们
32
A
回答
111
虽然@Orlandos的回答是正确的,但rake db:reset
不会重做所有的迁移,并且正如他所说,加载最后一个模式的数据。 如果要撤消所有的迁移,然后重做,你应该使用:
rake db:migrate:reset #runs db:drop db:create db:migrate
您可以在这个帖子详细信息请参阅:Difference between rake db:migrate db:reset and db:schema:load
14
16
如果你真的想回滚所有的迁移,而不是仅仅把数据库恢复到原始状态或最后的模式,你必须运行:
rake db:migrate VERSION=0
这实际上将回滚一路下来每个迁移和ensu因为每一次迁移都是可逆的。
如果你现在发出
rake db:migrate:status
你会看到,所有的迁移仍然存在,但他们是在“向下”(不适用)状态。
其他指令暗示rake db:reset
或rake db:drop
(例如@Orlando或@Alex Falke的答案)根本不会做任何回滚:也就是说,它们不会确保每次迁移都是可逆的。
而且,rake db:drop
不能在数据库被其他用户访问时运行,而回滚可以实时执行(即使通常不建议这样做)。最后但并非最不重要的一点是,简单地删除并重新创建数据库也会删除模式迁移表:如果某人在数据库被删除后运行rake db:migrate:status
,他将回答“模式迁移表尚不存在”,并且将没有线索关于哪些迁移可以应用(除非他知道它或可以列出它们)。
相关问题
- 1. rake db:migrate正确运行所有迁移
- 2. rake在rake数据库后迁移db:migrate
- 3. rails db:migrate vs rake db:migrate
- 4. Heroku rake db:migrate
- 5. rake db:migrate alter table name
- 6. 如何修复迁移以便rake db:migrate再次运行
- 7. Rake db:migrate error-SQLite3
- 8. rake db:migrate没有检测到新的迁移?经历
- 9. rake db:migrate bundle:command not found
- 10. heroku rake db:migrate aborting
- 11. Rake db:迁移刚刚恢复(回滚)所有迁移
- 12. 如何做数据库迁移Rails3 + datamapper
- 13. Rails 5:rails db:migrate或rake db:在heroku中迁移?
- 14. 如何使用rake db:migrate
- 15. 为什么“rake db:migrate”和“rake db:rollback”不能一次回滚多个迁移?
- 16. Bundle exec rake db:migrate不起作用(并且rake db:migrate也不起作用),Ubuntu
- 17. TextBox撤消/重做命令
- 18. MVVM光和撤消/重做?
- 19. Heroku Rake迁移
- 20. rake db:migrate(error)!
- 21. Heroku run rake db:migrate not working
- 22. “bundle exec rake db:migrate”是做什么的?
- 23. 如何撤消Perforce中的集成,并仍能够重做?
- 24. Rails迁移:撤消默认设置列
- 25. Django重建所有迁移
- 26. rake db:迁移失败
- 27. heroku rake db:migrate rake aborted!无法打开数据库
- 28. rake db:迁移postgreSQL
- 29. bundle exec rake db:migrate从哪里来?
- 30. rake db:迁移错误(迁移正在进行中)
这是真正正确的答案 – 2014-04-02 08:11:31
应该选择这个答案以避免混淆。 – 2015-01-10 03:17:11
'rake db:migrate:reset'实际上并没有回滚任何迁移,这就是问题所在。 – 2015-08-27 14:59:37