我需要 rails adding/removing foreign_key 的迁移帮助

I need some rails migration help for adding/removing foreign_key

在我的本地机器上 运行 rake db:migrate 从 db/schema.rb 文件中删除了几个 add_foreign_key 约束但是当我 运行我的开发服务器 rails 上的相同命令将它们添加回去。我检查了 mysql 和 rails 版本,它们是相同的。有人可以 guide/tell 告诉我这是怎么回事吗?

本地机器:

$ mysql --version
mysql  Ver 14.14 Distrib 5.7.23, for osx10.13 (x86_64) using  EditLine wrapper

$ rails --version
Rails 4.2.6

$ gem list --local mysql2
*** LOCAL GEMS ***
mysql2 (0.4.4)

开发服务器:

$ mysql --version
mysql  Ver 14.14 Distrib 5.7.23, for Linux (x86_64) using  EditLine wrapper

$ rails --version
Rails 4.2.6

$ gem list --local mysql2
*** LOCAL GEMS ***
mysql2 (0.4.4)

首先你需要明白 db/schema.rb 代表 ActiveRecord 在上次 db:schema:dump Rake 任务 运行 时对你的数据库的理解。数据库的结构(如 db/schema.rb 中所示)可能与您在 db/migrate 目录中看到的完全匹配,也可能不完全匹配:迁移可能已被添加和删除,数据库选项已更改,外星人,事情可能是手动的改变了(即外部迁移),...

看起来 FK 已添加到您的开发数据库中,但没有添加到您的生产数据库中,或者它们已从生产中删除(或被忽略),因此您的数据库不同步。使用 mysql CLI 工具检查您的生产数据库并查看 FK 是否存在;如果没有,则手动或使用仅生产迁移同步您的数据库。您可能希望首先在生产数据库的精确副本上执行此操作,以便在对生产系统造成混乱之前确保所有 FK 均有效。


如果您使用 "raw SQL" 格式来管理架构,则类似的事情适用于 db/structure.sql