我似乎找不到允许我跳过迁移的选项或任何内容。
我知道你在想什么:“你永远不应该这样做......”
我需要跳过对开发数据库中不存在的特定用户记录进行更改的迁移。我不想更改迁移,因为它不是我应该使用的源的一部分。有没有办法跳过迁移或跳过失败的迁移?
提前致谢!
最佳答案
我认为你应该修复有问题的迁移,使其不那么脆弱,我猜有几个 if
陈述,也许还有 rescue
就足够了。
但是,如果确实无法修复迁移,您可以通过各种方式来伪造它。首先,你可以直接注释掉迁移方法,运行 rake db:migrate
,然后取消注释(或恢复)有问题的迁移。
您也可以在数据库中伪造它,但不建议这样做,除非您知道自己在做什么并且不介意在(不可避免地)犯错误时手动修补。您的数据库中有一个名为 schema_migrations
的表有一个 varchar(255)
名为 version
的列;该表由 db:migrate
使用跟踪已应用的迁移。您需要做的就是插入适当的 version
值和rake db:migrate
会认为迁移已经完成。找到有问题的迁移文件:
db/migrate/99999999999999_XXXX.rb
然后进入您的数据库并说:
insert into schema_migrations (version) values ('99999999999999');
哪里99999999999999
当然,是迁移文件名中的数字。然后运行rake db:migrate
应该跳过该迁移。
我会在第三个选项之前选择第二个选项,为了完整性,我只包含“hack schema_versions
”选项。
关于ruby-on-rails - 如何跳过失败的迁移? ( rake 数据库:migrate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8810732/