每当我运行 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 在开发 AWS Beanstalk 中运行