每次我提交具有迁移的代码时,由于某种原因,我得到了一堆架构更改,我没有写过,这些更改来自以前的PR。
例如,我将编写一个迁移以在User上添加一个列...但是在运行迁移之后,模式文件将包含来自以前旧代码的10个更改,这些更改不在当前分支中一点都不。
我该如何解决这个问题?
答案 0 :(得分:2)
模式文件反映到数据库模式。我认为您已经更改了以前旧代码的架构,但没有恢复(回滚)它,删除它并开始编写新的迁移。
你要做的就是消除代码和数据库之间的差异。
解决方案:
签出旧分支并通过运行rake db:migrate:down VERSION=20161106xxxxxx
来回滚架构更改。
或
rake db:rollback STEP=n
回滚模式更改
rake db:rollback STEP=m
以按旧分支回滚模式更改。rake db:migrate
,您将看不到架构文件中的额外更改。参考:
答案 1 :(得分:0)
有两种可能性:
您还没有删除您尝试忽略schema.rb文件的先前迁移的代码。
您对rails非常陌生,您尝试手动删除schema.rb文件中的字段,认为它会与您的数据库同步。
无论哪种方式:删除您不想要的所有迁移文件,然后只需使用以下命令将数据库回滚到原始空版本:
rake db:rollback VERSION=0
然后:现在您拥有了正确的迁移文件,请使用以下命令迁移到您的数据库:
rake db:migrate
这应该为您提供准确的schema.rb文件