【问题标题】:Rollback all the migrations in ActiveRecord回滚 ActiveRecord 中的所有迁移
【发布时间】:2015-11-15 20:24:00
【问题描述】:

如何删除/回滚所有已运行的迁移,而无需删除和设置数据库

rake db:rollback

只返回一个版本。我怎样才能让它一路走下去?

【问题讨论】:

  • 你可以使用rake db:reset
  • 但内部调用 - db:drop 和 db:setup。我不希望 drop 被调用

标签: ruby activerecord database-migration rails-migrations


【解决方案1】:

一种方法是:

rake db:rollback STEP=10000000 

这几乎意味着要退回这么多步骤,以至于迁移总是进入第 0 步。 另一种方法是:

  rake db:migrate VERSION=0

更多参考here.

【讨论】:

  • 如果我想一路? (即我不想知道运行的迁移次数)
  • 我添加了另一个选项。它适合这个问题吗?
  • 有点 :) 但我不想输入版本。
  • rake db:migrate VERSION=0 会让你回到起点
【解决方案2】:

您可以运行$ rake db:migrate:status 来查看您的所有迁移以及它们是处于启动还是关闭状态。转到该列表中的第一个迁移并运行:

 rake db:rollback VERSION=version_id_shown_by_migrate_status_list_you_just_did

请注意,如果您撤消所有迁移,则在删除列或表时所有数据都将丢失。然后,您可以通过执行正常的 rake db:migrate

来重新加载迁移

【讨论】:

  • 是的,我可以做到。没有比这更简单的了。例如 rake db:rollback STEP=-1
【解决方案3】:

要回滚所有迁移,请使用 bin/rake:db reset。 注意,如果迁移不能回滚,rake db:reset 可能会失败。

References here

【讨论】:

  • 删除 db (db:drop)。我不想删除数据库。
猜你喜欢
  • 2023-03-18
  • 2013-11-18
  • 2014-06-21
  • 2012-08-27
  • 2021-07-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-07
  • 2018-09-14
相关资源
最近更新 更多