我似乎找不到允许我跳过迁移的选项或任何东西
我知道你在想什么:“你永远不应该那样做……”
我需要跳过对开发数据库中不存在的特定用户记录进行更改的迁移。我不想更改迁移,因为它不是我应该使用的源代码的一部分。有没有办法跳过迁移或跳过失败的迁移
提前谢谢
我认为您应该修复有问题的迁移,使其不那么脆弱,我想几个if语句和rescue就足够了
但是,如果修复迁移真的不是一个选项,您可以通过各种方式来伪造它。首先,您可以注释掉迁移方法,运行rakedb:migrate,然后取消注释(或恢复)有问题的迁移
你也可以在数据库中伪造它,但除非你知道自己在做什么,并且当你(不可避免地)犯了错误时,你不介意手动修补,否则不建议使用这种诡计。数据库中有一个名为schema_migrations的表,其中有一个varchar(255)列,名为version;db:migrate使用此表跟踪已应用的迁移。您只需插入适当的version值,rake db:migrate就会认为迁移已经完成。查找有问题的迁移文件:
db/migrate/9999999999_XXXX.rb
然后进入数据库并说:
将迁移(版本)值('99999999999')插入到架构中;
其中99999999999当然是迁移文件名中的数字。然后运行rakedb:migrate应该跳过该迁移
在第三个选项之前,我会选择第二个选项,为了完整性,我只包括“hackschema\u versions”选项