Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 每次提交时都会意外更改架构_Ruby On Rails_Migration_Schema - Fatal编程技术网

Ruby on rails 每次提交时都会意外更改架构

Ruby on rails 每次提交时都会意外更改架构,ruby-on-rails,migration,schema,Ruby On Rails,Migration,Schema,每次我提交有迁移的代码时,出于某种原因,我都会得到一堆我没有编写的模式更改,这些更改来自以前的PRs 例如,我将编写一个迁移,在User上添加一个列……但是在运行迁移之后,模式文件将包含对以前的旧代码的10个更改,这些更改根本不在当前分支中 如何解决此问题?有两种可能性: 您尚未从schema.rb文件中删除您试图忽略的以前迁移的代码 您对rails非常陌生,尝试手动删除schema.rb文件中的字段,认为它会与数据库同步 无论哪种方式:删除所有不需要的迁移文件(如果尚未删除),然后使用以下命令

每次我提交有迁移的代码时,出于某种原因,我都会得到一堆我没有编写的模式更改,这些更改来自以前的PRs

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


如何解决此问题?

有两种可能性:

  • 您尚未从schema.rb文件中删除您试图忽略的以前迁移的代码

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

  • 无论哪种方式:删除所有不需要的迁移文件(如果尚未删除),然后使用以下命令将数据库回滚到原始空版本:

    rakedb:rollbackversion=0

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

    rakedb:migrate


    这将为您提供一个准确的schema.rb文件

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

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

    解决方案:

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

  • 在当前分支中,运行当前分支完成的回滚模式更改
  • 然后checkout co old branch执行rake db:rollback STEP=m以回滚旧分支的模式更改
  • 签回当前分支,并运行
    rakedb:migrate
    ,您将不会在模式文件中看到额外的更改
  • 参考: