每当我运行 rake db:migrate 时,Rails Schema 都会意外更改

Posted

技术标签:

【中文标题】每当我运行 rake db:migrate 时,Rails Schema 都会意外更改【英文标题】:Rails Schema changes unintentionally whenever I run rake db:migrate 【发布时间】:2017-03-21 12:29:48 【问题描述】:

每当我运行 rake db:migrate 时,它​​都会通过删除一个特定表上的外键来更新我的 rails Schema。我不明白为什么,也不知道如何防止这种情况发生。

[1]http://imgur.com/BBssPdU

我该如何解决这个问题?我无法编写另一个迁移来重新添加引用,因为它会引发重复错误。

【问题讨论】:

schema.rb 是根据数据库中的内容生成的,而不是迁移中的内容。这表明您的数据库中没有这三个 FK。直接检查数据库(即通过mysql CLI 工具,看不到 Rails)并查看 FK 是否真的存在。 使用模式with FK,运行rails db:schema:load 【参考方案1】:

能否请您发布完整的迁移文件?

另外,您是否尝试过使用rake db:rollback 回滚到上次迁移之前? (你也可以回滚多个迁移,见here)

小心!回滚可能会从您的数据库中删除数据,因此如果您无法承受这种情况,那么这可能不是最佳解决方案。

【讨论】:

以上是关于每当我运行 rake db:migrate 时,Rails Schema 都会意外更改的主要内容,如果未能解决你的问题,请参考以下文章

如何运行 db:migrate 从另一个带参数的 rake 任务?

运行 rake db:migrate 后,我的架构不会更新

rake db:migrate 在开发 AWS Beanstalk 中运行

在 Heroku 上执行 rake db:migrate 时出错

如何使用 rake db:migrate 仅回滚一步

Can't rake:db migrate - 继续让 'rake 中止!加载错误' [重复]