Rails丢失了迁移文件问题

时间:2013-11-28 12:58:33

标签: ruby-on-rails ruby postgresql rails-migrations

2个月前,我的一个迁移文件已被删除。问题是当我使用db:在localhost中迁移我的数据库时,缺少迁移。我无法创建新的迁移,因为生产数据库是使用丢失的文件迁移的。因此,每当我在本地导入生产数据库并运行迁移时,它会说:

字段已存在....

我看到一些评论说我应该使用相应版本的迁移文件修改schema_migrations表。

您对此问题有任何更深入的解释吗?

由于

1 个答案:

答案 0 :(得分:1)

schema_migrations表包含已运行的所有迁移的所有版本号,或者系统认为至少已运行的所有迁移的版本号。当您执行rake db:migrate时,rails会查看db / migrate中的所有文件,并忽略其数字前缀位于schema_migrations中的文件。

因此,如果您的迁移实际上已经运行过,但系统认为它没有,那么您只需要将其版本号添加到schema_migrations中。

打开相关的数据库控制台,然后键入

insert into schema_migrations (version) values("<the number from the start of the migration file>");
显然,替换&lt;中的部分。 &GT;用正确的数字。

然后,db:migrate将不再尝试并运行该迁移。