2个月前,我的一个迁移文件已被删除。问题是,当我在localhost中耙数据库:迁移我的数据库时,迁移就丢失了。我不能创建新的迁移,因为生产数据库是用丢失的文件迁移的。所以每次我在本地导入生产数据库并运行迁移时,它都会说:
字段已存在
我看到一些评论,说我应该用相应版本的迁移文件修改schema_mmigrations表。
你对这个问题有什么更深入的解释吗。
感谢
schema_mmigrations表包含所有已运行的迁移的所有版本号,或者系统认为至少已运行的版本号。执行rake db:migrate
时,rails会查看db/migrate中的所有文件,并忽略数字前缀在schema_migrations
中的文件。
因此,如果您有一个迁移实际上已经运行,但系统认为它还没有运行,那么您只需要将其版本号添加到schema_mmigrations中。
打开相关数据库控制台,键入
insert into schema_migrations (version) values("<the number from the start of the migration file>");
显然,替换<>中的部件使用正确的编号。
然后,db:migrate将不再尝试并运行该迁移。