我需要一些Rails迁移帮助来添加/删除Foreign_key

时间:2018-09-18 16:46:05

标签: mysql ruby-on-rails mysql2

在运行rake db:migrate的本地计算机上,从db / schema.rb文件中删除了几个add_foreign_key约束,但是当我在开发服务器导轨上运行相同命令时,会将它们重新添加。检查了mysql&rails版本,它们是相同的。有人可以指导/告诉我这里发生了什么吗?

本地计算机:

$ 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)

1 个答案:

答案 0 :(得分:0)

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

类似FK的外观已添加到开发数据库中,但未添加到生产数据库中,或者已从生产环境中删除(或忽略了它们),因此数据库不同步。使用mysql CLI工具检查生产数据库,并查看是否有FK。如果他们没有手动或通过仅生产的迁移来同步数据库。您可能需要首先在生产数据库的精确副本上执行此操作,以便在释放生产系统上的混乱之前确保所有FK都有效。


如果您使用“原始SQL”格式来管理架构,则类似的情况适用于db/structure.sql