每次提交时都会发生意外的架构更改

时间:2016-11-05 18:05:35

标签: ruby-on-rails migration schema

每次我提交具有迁移的代码时,由于某种原因,我得到了一堆架构更改,我没有写过,这些更改来自以前的PR。

例如,我将编写一个迁移以在User上添加一个列...但是在运行迁移之后,模式文件将包含来自以前旧代码的10个更改,这些更改不在当前分支中一点都不。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

模式文件反映到数据库模式。我认为您已经更改了以前旧代码的架构,但没有恢复(回滚)它,删除它并开始编写新的迁移。

你要做的就是消除代码和数据库之间的差异。

解决方案:

签出旧分支并通过运行rake db:migrate:down VERSION=20161106xxxxxx来回滚架构更改。

  1. 在当前分支中,运行当前分支
  2. 完成的rake db:rollback STEP=n回滚模式更改
  3. 然后checkout co旧分支执行rake db:rollback STEP=m以按旧分支回滚模式更改。
  4. 结帐回当前分支,然后运行rake db:migrate,您将看不到架构文件中的额外更改。
  5. 参考:

答案 1 :(得分:0)

有两种可能性:

  1. 您还没有删除您尝试忽略schema.rb文件的先前迁移的代码。

  2. 您对rails非常陌生,您尝试手动删除schema.rb文件中的字段,认为它会与您的数据库同步。

  3. 无论哪种方式:删除您不想要的所有迁移文件,然后只需使用以下命令将数据库回滚到原始空版本:

    rake db:rollback VERSION=0

    然后:现在您拥有了正确的迁移文件,请使用以下命令迁移到您的数据库:

    rake db:migrate

    这应该为您提供准确的schema.rb文件