我有一个迁移文件db\migrate\20100905201547_create_blocks.rb。

如何具体回滚该迁移文件?


当前回答

迁移文件是这样的,

 20221213051020_my_migrations

在本例中,模型名应该是MyMigration。migration以一个复数词结尾,所以它以migrations结尾。

要回滚这个特定的迁移,您必须理解迁移名称的第一部分(迁移名称前面的数字)是迁移编号。

要回滚这次迁移,只需打开终端并写入,

rake db:migrate:down VERSION=migration_number

最后,你必须在终端中输入回滚这个特定的迁移,

在终端上写下面的命令回滚一个特定的迁移,上面的命令只是给你解释

rake db:migrate:down VERSION=20221213051020

只需记住,每次迁移都有不同的迁移编号,因此请仔细观察并手动复制、粘贴或键入。

其他回答

rake db:rollback STEP=1

是一种方法,如果要回滚的迁移是最后应用的迁移。您可以将1替换为您想要返回的任意多次迁移。

例如:

rake db:rollback STEP=5

还将回滚之后发生的所有迁移(4,3,2和1)。

要将所有迁移回滚到(并包括)目标迁移,请使用:(此更正命令是在原始帖子中指出错误的所有注释之后添加的)

rake db:migrate VERSION=20100905201547

为了只回滚一个特定的迁移(乱序)使用:

rake db:migrate:down VERSION=20100905201547

注意,这不会回滚任何调解迁移——只回滚列出的迁移。如果这不是您想要的,您可以安全地运行rake db:migrate,它将只重新运行该文件,跳过之前未回滚的其他文件。

如果你想要迁移一个无序的迁移,还有它的逆db:migrate:up:

rake db:migrate:up VERSION=20100905201547
rake db:migrate:down VERSION=20100905201547

将回滚特定的文件。


要找到所有迁移的版本,你可以使用这个命令:

rake db:migrate:status

或者,简单地说,迁移文件名的前缀就是需要回滚的版本。


请参阅Ruby on Rails指南中关于迁移的条目。

对于多个数据库配置(RoR >= v6),您必须在命令中附加数据库名称,例如:

Rails db:rollback:primary,其中primary是config/databases中数据库的名称。Yml文件,回滚上次迁移。与往常一样,您可以在这里使用STEPS属性。 rails db:migrate:down:primary VERSION=your_migration_timestamp,只恢复提供的迁移版本。这里primary也是数据库的名称。

如果您想从上次迁移中恢复,请使用rake db:rollback命令。它对我很有效!

迁移使用该命令更改数据库的状态

bundle exec rake db:migrate

我们可以使用

bundle exec rake db:rollback

要从头再来,我们可以用

bundle exec rake db:migrate VERSION=0

正如您可能猜到的那样,将任何其他数字替换为0将迁移到该版本号,其中版本号来自按顺序列出的迁移。