如何跳过失败的迁移?(rake数据库:迁移)

我似乎找不到允许我跳过迁移的选项或任何东西

我知道你在想什么:“你永远不应该那样做……”

我需要跳过对开发数据库中不存在的特定用户记录进行更改的迁移。我不想更改迁移,因为它不是我应该使用的源代码的一部分。有没有办法跳过迁移或跳过失败的迁移

提前谢谢

我认为您应该修复有问题的迁移,使其不那么脆弱,我想几个if语句和rescue就足够了

但是,如果修复迁移真的不是一个选项,您可以通过各种方式来伪造它。首先,您可以注释掉迁移方法,运行rakedb:migrate,然后取消注释(或恢复)有问题的迁移

你也可以在数据库中伪造它,但除非你知道自己在做什么,并且当你(不可避免地)犯了错误时,你不介意手动修补,否则不建议使用这种诡计。数据库中有一个名为schema_migrations的表,其中有一个varchar(255)列,名为versiondb:migrate使用此表跟踪已应用的迁移。您只需插入适当的version值,rake db:migrate就会认为迁移已经完成。查找有问题的迁移文件:

db/migrate/9999999999_XXXX.rb

然后进入数据库并说:

将迁移(版本)值('99999999999')插入到架构中;

其中99999999999当然是迁移文件名中的数字。然后运行rakedb:migrate应该跳过该迁移

在第三个选项之前,我会选择第二个选项,为了完整性,我只包括“hackschema\u versions”选项

发表评论