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