0

我创建了一个迁移并在 git 分支中运行它,但随后没有合并该分支。但是,该迁移中的 db 列仍然存在,实际上我仍然需要它们。由于它们没有迁移文件(因为我没有合并分支),我创建了一个新的迁移但显然无法运行它,因为列已经存在。因此,我通过给它一个数字来重命名文件,使它看起来好像是一个早期的迁移——我认为如果我更改文件上的数字,Rails 会认为迁移已经运行。然而,这并没有奏效。现在,每当我运行迁移时,它都会中止,因为我在其中有这个迁移文件尚未运行但列已经存在。我可以删除这个文件,但是当我投入生产时这对我没有帮助。

在这种情况下你会怎么做?

如果重要,我正在使用 postgres

4

2 回答 2

1

Rails 通过比较目录中文件的迁移编号与它在表中db/migrate/找到的编号来检查迁移是否已经运行。schema_migrations如果您想假装迁移已经运行,只需手动将迁移编号插入此表即可。然而,这只是一个丑陋的解决方法,它绝对不应该经常使用 - 并且永远不要在生产中使用它。

于 2013-05-22T18:27:34.843 回答
1
rake db:rollback

然后在您的另一个分支中生成迁移并

rake db:migrate
于 2013-05-22T18:29:12.107 回答