【发布时间】:2018-09-18 16:46:05
【问题描述】:
在我运行 rake db:migrate 的本地计算机上,从 db/schema.rb 文件中删除了几个 add_foreign_key 约束,但是当我在开发服务器上运行相同的命令时,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)
【问题讨论】:
-
您是否只从架构文件中删除?如果是,那么这将不起作用。您需要创建一个新的迁移文件,您将在其中删除外键约束。
-
我没有删除任何东西。当我运行命令时,Rails 会这样做。
-
好的。首先,我认为问题不在于 rails 或 mysql 版本。大胆猜测一下,您是否正在与可能推送具有 add_foreign_key 约束的架构文件的人合作?
-
db/schema.rb是生成schema.rb时当前存在的数据库的表示形式,它不一定取决于迁移中的内容,它取决于数据库的结构。因此,使用mysqlCLI 工具查看您的生产数据库并查看 FK 是否存在,如果不存在则添加它们并重新生成schema.rb。当然,您应该首先使用生产数据库的精确副本对此进行测试,并为出现问题做好准备。 -
迁移代码可以分享吗?你能检查一下开发服务器和本地的配置文件吗?
标签: mysql ruby-on-rails mysql2