我有一个迁移文件db\migrate\20100905201547_create_blocks.rb。
如何具体回滚该迁移文件?
我有一个迁移文件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是迁移的版本号。