我为我的 Rails 3 应用程序编写了一些迁移,但我想更改迁移的顺序。如何更改迁移顺序或顺序?它是否像使用看似时间戳的名称重命名迁移文件一样简单?
我知道这是一个奇怪的问题,但基本上,我把我的迁移弄得一团糟,删除了一些旧的迁移,现在我需要在创建新表之前删除一个表。我也知道我可以在创建新表迁移中包含 drop 语句,但我很好奇知道如何对迁移进行重新排序。
是的,它运行尚未按前缀顺序运行的迁移。 在早期版本的rails中,也许是2.1
或2.2
,它们曾经以01
开头编号,但它们切换到时间戳。
有一个表可以跟踪已运行的迁移。 目的是,多个开发人员我添加了迁移,并在以后的版本控制中检查它们。 因此,可能存在尚未运行的迁移,但在已运行的最高编号迁移之前编号
。如果您更改迁移顺序,(我有(最好在重新排序的所有迁移之前先降低版本。 将"VERSION
"选项与 db:migrate
一起使用。 如果要保留(而不是运行(的最高编号迁移是20120318143249
,则以这种方式调用它。
rake db:migrate VERSION=20120318143249
我经常运行迁移,然后重新运行它,直到我满意地获得迁移的详细信息。 有时我会重新排序它们,当我想处理其中一个时,我希望它是最后一个。
是的,文件名上的前缀决定了执行顺序。但是,请记住,这只会在擦除数据库/重新开始时更改您当前的系统。
我遇到了类似的问题,因为迁移没有以正确的顺序进行。在阅读了米奇的回答后,我决定重命名迁移以按照我需要的方式对日期进行排序。在此修复后,我运行了rails db:migrate
并且它起作用了。不是最优雅的解决方案,但它有效,所以我想我会分享它。