每次我提交有迁移的代码时,出于某种原因,我得到了一堆我以前从未写过的模式更改。每次我提交时意外的模式更改
例如,我将编写迁移以在用户...上添加一列,但在运行迁移之后,架构文件将包括对先前旧代码根本不在当前分支中的10个更改。
我该如何解决这个问题?
每次我提交有迁移的代码时,出于某种原因,我得到了一堆我以前从未写过的模式更改。每次我提交时意外的模式更改
例如,我将编写迁移以在用户...上添加一列,但在运行迁移之后,架构文件将包括对先前旧代码根本不在当前分支中的10个更改。
我该如何解决这个问题?
有两种可能性:
您还没有删除的代码,你从schema.rb文件试图忽略以前的迁移。
你对rails非常陌生,并且试图手动删除schema.rb文件中的字段,认为它会与数据库同步。
无论哪种方式:删除所有,如果您有没有准备好,然后使用命令只是回滚数据库到原来的空版本,你不想迁移文件:
rake db:rollback VERSION=0
然后:
:现在你有合适的迁移文件,使用命令迁移到DATABSE
这应该给你一个准确的schema.rb文件
模式文件反映到数据库架构。我认为你已经在之前的旧代码中改变了模式,但没有恢复(回滚)它,删除它并开始编码新的迁移。
你应该做的事是消除代码和数据库之间的差异。
解决方案:
Checkout与您的老枝,并通过运行rake db:migrate:down VERSION=20161106xxxxxx
回滚架构更改。
或
rake db:rollback STEP=n
回滚架构更改由当前分支进行rake db:rollback STEP=m
回滚通过旧的分支架构更改。rake db:migrate
,并且您不会看到模式文件中的额外更改。参考: