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

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


当前回答

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

bundle exec rake db:migrate

我们可以使用

bundle exec rake db:rollback

要从头再来,我们可以用

bundle exec rake db:migrate VERSION=0

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

其他回答

回滚上次迁移:

# rails < 5.0
rake db:rollback

# rails >= 5.0
rake db:rollback
# or
rails db:rollback

回滚最近n次迁移

# rails < 5.0
rake db:rollback STEP=2

# rails >= 5.0
rake db:rollback STEP=2
# or
rails db:rollback STEP=2

回滚特定的迁移

# rails < 5.0
rake db:migrate:down VERSION=20100905201547

# rails >= 5.0
rake db:migrate:down VERSION=20100905201547
# or
rails db:migrate:down VERSION=20100905201547

Use:

rake db:migrate:down VERSION=your_migrations's_version_number_here

版本是迁移文件名上的数字前缀。

如何找到版本:

迁移文件存储在rails_root/db/migrate目录中。找到要回滚到的适当文件并复制前缀编号。

例如:

文件名称:20140208031131_create_roles.rb

则版本号为20140208031131。

嗯,在rails中这很简单

rake db:migrate:status

or

rails db:migrate:status

它被修改为以相同的方式处理两者。 然后选择要回滚的版本 然后运行

rake db:migrate VERSION=2013424230423

确保VERSION全部为大写字母。

如果您在迁移的任何步骤中遇到了问题,或者仅仅是卡在中间,请转到迁移文件并注释掉已经迁移的行。

要回滚上次迁移,您可以执行以下操作:

rake db:rollback

如果你想用一个版本回滚一个特定的迁移,你应该做:

rake db:migrate:down VERSION=YOUR_MIGRATION_VERSION

如果要回滚的迁移文件名为db/migrate/20141201122027_create_some_table。rb,那么该迁移的VERSION是20141201122027,这是创建该迁移的时间戳,回滚该迁移的命令将是:

rake db:migrate:down VERSION=20141201122027

您可以使用rake db:rollback和不同的选项来回滚迁移。语法将根据您的需求有所不同。

如果您只想回滚最后一次迁移,那么可以使用这两种方法中的任何一种

rake db:rollback

or

rake db:rollback STEP=1

如果你想要一次回滚迁移数量,那么你只需传递一个参数:

rake db:rollback STEP=n

其中n是迁移到回滚的次数,从最近一次迁移开始计算。

如果你想要回滚到一个特定的迁移,那么你应该在下面传递迁移的版本:

rake db:migrate:down VERSION=xxxxx

其中XXXXX是迁移的版本号。