Mysql重复外键约束

时间:2016-09-15 01:23:40

标签: mysql

当我尝试导入数据库时​​出现此错误

SQL query:
ALTER TABLE `bid`
ADD CONSTRAINT `bid_ibfk_4` FOREIGN KEY (`auction_contact_id`) REFERENCES `auction_contact` (`auction_contact_id`),
ADD CONSTRAINT `bid_ibfk_3` FOREIGN KEY (`car_id`) REFERENCES `car` (`car_id`)

MySQL said: Documentation
#1826 - Duplicate foreign key constraint name 'projekt_classics/bid_ibfk_3'

查看我得到的所有外键

select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS where CONSTRAINT_TYPE = 'FOREIGN KEY' 

结果

def     projekt_classics    bid_ibfk_2      projekt_classics    bid     FOREIGN KEY
def     projekt_classics    bid_ibfk_3      projekt_classics    bid     FOREIGN KEY
def     projekt_classics    car_ibfk_1      projekt_classics    car     FOREIGN KEY
def     projekt_classics    car_ibfk_3      projekt_classics    car     FOREIGN KEY
def     projekt_classics    car_ibfk_4      projekt_classics    car     FOREIGN KEY
def     projekt_classics    car_brand_ibfk_1    projekt_classics    car_brand   FOREIGN KEY

在sql中搜索bid_ibfk_3约束只显示一次。 所有数据都在导入的数据库中,但我想知道如何避免这个错误。

编辑: 首先删除所有表运行查询没有问题。 我使用PHPmyadmin导出我的数据库。 我猜错误是因为在尝试再次创建它之前尚未删除外键约束。

1 个答案:

答案 0 :(得分:2)

如果查看查询结果,外键 val json = itemList.toJSON json.saveAsTextFile("s3://...", classOf[GzipCodec]) 已存在。实际上它位于结果的第二行。

bid_ibfk_3

这就是为什么在尝试执行此操作时获取重复的外键约束名称的原因:

def     projekt_classics    bid_ibfk_2      projekt_classics    bid     FOREIGN KEY
--the row below is the foreign key that you are trying to create
def     projekt_classics    bid_ibfk_3      projekt_classics    bid     FOREIGN KEY
def     projekt_classics    car_ibfk_1      projekt_classics    car     FOREIGN KEY
def     projekt_classics    car_ibfk_3      projekt_classics    car     FOREIGN KEY
def     projekt_classics    car_ibfk_4      projekt_classics    car     FOREIGN KEY
def     projekt_classics    car_brand_ibfk_1    projekt_classics    car_brand   FOREIGN KEY

在实际创建之前,您可以修改查询以首先检查您尝试创建的外键是否不存在。

ADD CONSTRAINT `bid_ibfk_3` FOREIGN KEY (`car_id`) REFERENCES `car` (`car_id`)