Mysql 每当我运行rakedb:migrate时,Rails模式都会意外更改

Mysql 每当我运行rakedb:migrate时,Rails模式都会意外更改,mysql,ruby-on-rails,ruby,Mysql,Ruby On Rails,Ruby,每当我运行rakedb:migrate时,它都会通过删除一个特定表上的外键来更新rails模式。我不明白为什么,也不知道如何防止这种情况发生 [1] 我怎样才能解决这个问题?我无法编写另一个迁移来重新添加引用,因为它会引发重复错误。请发布完整的迁移文件好吗 另外,您是否尝试过使用rake db:rollback回滚到上次迁移之前的位置?(您还可以回滚多个迁移,请参阅) 小心!回滚可以从数据库中删除数据,因此,如果您负担不起这种情况,那么这可能不是最好的解决方案。schema.rb是基于数据库中的

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

[1]


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

请发布完整的迁移文件好吗

另外,您是否尝试过使用
rake db:rollback
回滚到上次迁移之前的位置?(您还可以回滚多个迁移,请参阅)


小心!回滚可以从数据库中删除数据,因此,如果您负担不起这种情况,那么这可能不是最好的解决方案。

schema.rb
是基于数据库中的内容而不是迁移中的内容生成的。这表明数据库中没有这三个FK。直接检查数据库(即,通过
mysql
CLI工具,在看不到Rails的情况下),看看FKs是否真的存在。使用带有FKs的模式,运行
Rails db:schema:load