2016-11-05 60 views
1

每次我提交有迁移的代码时,出于某种原因,我得到了一堆我以前从未写过的模式更改。每次我提交时意外的模式更改

例如,我将编写迁移以在用户...上添加一列,但在运行迁移之后,架构文件将包括对先前旧代码根本不在当前分支中的10个更改。

我该如何解决这个问题?

回答

0

有两种可能性:

  1. 您还没有删除的代码,你从schema.rb文件试图忽略以前的迁移。

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

无论哪种方式:删除所有,如果您有没有准备好,然后使用命令只是回滚数据库到原来的空版本,你不想迁移文件:

rake db:rollback VERSION=0

然后:

现在你有合适的迁移文件,使用命令迁移到DATABSE

这应该给你一个准确的schema.rb文件

2

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

你应该做的事是消除代码和数据库之间的差异。

解决方案:

Checkout与您的老枝,并通过运行rake db:migrate:down VERSION=20161106xxxxxx回滚架构更改。

  1. 在当前分支,运行rake db:rollback STEP=n回滚架构更改由当前分支进行
  2. 然后结帐共老枝执行rake db:rollback STEP=m回滚通过旧的分支架构更改。
  3. 签出回当前分支,并运行rake db:migrate,并且您不会看到模式文件中的额外更改。

参考: