我需要一些rails迁移帮助来添加/删除外键

bqf10yzr  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(446)

在我的本地机器上运行 rake db:migrate 从db/schema.rb文件中删除了几个add\u-foreign\u键约束,但是当我在dev服务器上运行相同的命令时,rails会将它们重新添加进去。我检查了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)
gdx19jrr

gdx19jrr1#

首先你要明白这一点 db/schema.rb 表示activerecord上次 db:schema:dump rake任务已运行。数据库的结构(如 db/schema.rb )可能与你在照片中看到的完全吻合,也可能不完全吻合 db/migrate 目录:迁移可能已经被添加和删除,数据库选项已经更改,外星人,事情可能已经被手动更改(即外部迁移)。。。
看起来FK已添加到开发数据库中,但未添加到生产数据库中,或者已从生产数据库中删除(或忽略),因此数据库不同步。使用 mysql cli工具,查看fks是否存在;如果不同步,则手动或通过仅生产迁移同步数据库。您可能希望首先在生产数据库的精确副本上执行此操作,以便在生产系统上释放混乱之前确保所有FK都有效。
类似的事情也适用于 db/structure.sql 如果您使用“原始sql”格式来管理您的模式。

相关问题