Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 由同一列上的两个约束引起的重复外键约束_Mysql_Ruby On Rails_Ruby_Activerecord_Rails Activerecord - Fatal编程技术网

Mysql 由同一列上的两个约束引起的重复外键约束

Mysql 由同一列上的两个约束引起的重复外键约束,mysql,ruby-on-rails,ruby,activerecord,rails-activerecord,Mysql,Ruby On Rails,Ruby,Activerecord,Rails Activerecord,背景:Rails项目(最近从4.2.1更新到4.2.5.2),6年内编写了267个迁移文件。此项目维护其他3个Rails应用程序使用的数据库迁移(其中禁用了db任务) 为了在新机器中建立数据库和表以供开发,我们总是使用生产转储。但我最近尝试运行了rakedb:migrate,得到了这个结果 Mysql2::Error: Failed to open the referenced table 'referrer_organizations': ALTER TABLE `organization_r

背景:Rails项目(最近从4.2.1更新到4.2.5.2),6年内编写了267个迁移文件。此项目维护其他3个Rails应用程序使用的数据库迁移(其中禁用了db任务)

为了在新机器中建立数据库和表以供开发,我们总是使用生产转储。但我最近尝试运行了
rakedb:migrate
,得到了这个结果

Mysql2::Error: Failed to open the referenced table 'referrer_organizations': ALTER TABLE `organization_referrals` ADD CONSTRAINT `fk_rails_aded077271`                                                               
导致此问题的迁移文件是

class CreateOrganizationReferrals
很久以前,我在4.2.1中运行了rakedb:migrate。不知道为什么在4.2.5.2中我会遇到这个问题。这可能是因为4.2.5.2吗

所以我做了一些搜索,虽然我会使用
schema.rb
来加载模式,而不是依赖
rakedb:migrate
。但发生了另一个错误

ActiveRecord::StatementInvalid: Mysql2::Error: Duplicate foreign key constraint name 'fk_rails_0213c2b87e'
因此,我深入到schema.rb中,发现了重复的行

添加外键“jobspikr\u数据查询”、“jobspikr\u组织”
添加外键“jobspikr\u数据查询”、“jobspikr\u组织”
然后我查看了sql转储,发现了这个

  CONSTRAINT `fk_rails_9b58d2d0ef` FOREIGN KEY (`jobspikr_organization_id`) REFERENCES `jobspikr_organizations` (`id`),
  CONSTRAINT `fk_rails_f41d37972f` FOREIGN KEY (`jobspikr_organization_id`) REFERENCES `jobspikr_organizations` (`id`)
在同一个表中的同一列上出现这两个约束的原因是什么

为了解决这个问题,我创建了一个新的迁移文件,如下所示,以删除一个外键约束

remove_foreign_key:jobspikr_data_querys,column::jobspikr_organization_id
然后在我的开发机器上运行它,然后转储模式,在测试环境中运行新模式,它工作得很好

在我的生产环境中删除如上所示的外键约束是否安全。如果我这样做,数据会有问题吗