我有一个迁移文件db\migrate\20100905201547_create_blocks.rb。
如何具体回滚该迁移文件?
我有一个迁移文件db\migrate\20100905201547_create_blocks.rb。
如何具体回滚该迁移文件?
当前回答
对于多个数据库配置(RoR >= v6),您必须在命令中附加数据库名称,例如:
Rails db:rollback:primary,其中primary是config/databases中数据库的名称。Yml文件,回滚上次迁移。与往常一样,您可以在这里使用STEPS属性。 rails db:migrate:down:primary VERSION=your_migration_timestamp,只恢复提供的迁移版本。这里primary也是数据库的名称。
其他回答
我发现这些步骤最有用。
执行rails db:migrate:status命令查看状态。然后,您将对想要删除的迁移有一个很好的了解。
然后执行rails db:rollback命令将修改的内容逐一恢复。这样做之后,您可以再次检查状态,以充分自信。
下一步,如果您想删除或删除。执行rails d migration <migration_name>。这将清理您创建的版本。
完成这些之后,您可以继续进行新的更改。
要回滚上次迁移,您可以执行以下操作:
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
对于多个数据库配置(RoR >= v6),您必须在命令中附加数据库名称,例如:
Rails db:rollback:primary,其中primary是config/databases中数据库的名称。Yml文件,回滚上次迁移。与往常一样,您可以在这里使用STEPS属性。 rails db:migrate:down:primary VERSION=your_migration_timestamp,只恢复提供的迁移版本。这里primary也是数据库的名称。
嗯,在rails中这很简单
rake db:migrate:status
or
rails db:migrate:status
它被修改为以相同的方式处理两者。 然后选择要回滚的版本 然后运行
rake db:migrate VERSION=2013424230423
确保VERSION全部为大写字母。
如果您在迁移的任何步骤中遇到了问题,或者仅仅是卡在中间,请转到迁移文件并注释掉已经迁移的行。
要回滚所有的迁移到一个特定的版本(例如20181002222222),使用:
rake db:migrate VERSION=20181002222222
(注意,这里使用的是db:migrate,而不是其他答案中的db:migrate:down。)
假设指定的迁移版本比当前版本更老,这将回滚到指定版本之前的所有迁移,但不包括指定版本。
例如,如果rake db:migrate:status初始显示:
(... some older migrations ...)
up 20181001002039 Some migration description
up 20181002222222 Some migration description
up 20181003171932 Some migration description
up 20181004211151 Some migration description
up 20181005151403 Some migration description
运行:
rake db:migrate VERSION=20181002222222
会导致:
(... some older migrations ...)
up 20181001002039 Some migration description
up 20181002222222 Some migration description
down 20181003171932 Some migration description
down 20181004211151 Some migration description
down 20181005151403 Some migration description
参考:只迁移或恢复某些迁移