2个月前,我的一个迁移文件已被删除。问题是当我使用db:在localhost中迁移我的数据库时,缺少迁移。我无法创建新的迁移,因为生产数据库是使用丢失的文件迁移的。因此,每当我在本地导入生产数据库并运行迁移时,它会说:
字段已存在....
我看到一些评论说我应该使用相应版本的迁移文件修改schema_migrations表。
您对此问题有任何更深入的解释吗?
由于
答案 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将不再尝试并运行该迁移。