gpt4 book ai didi

Mysql重复外键约束

转载 作者:行者123 更新时间:2023-12-01 13:41:47 26 4
gpt4 key购买 nike

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

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约束仅显示 1 次。
所有数据都在导入的数据库中,但我想知道如何避免此错误。

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

最佳答案

如果您查看查询结果,会发现外键 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`)

您可以修改您的查询以在实际创建之前先检查您尝试创建的外键是否不存在。
IF NOT EXISTS (SELECT NULL FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_SCHEMA = DATABASE()
AND CONSTRAINT_TYPE = 'FOREIGN KEY'
AND CONSTRAINT_NAME = 'bid_ibfk_3') THEN
ALTER TABLE `bid` ADD CONSTRAINT `bid_ibfk_3`
FOREIGN KEY (`car_id`) REFERENCES `car` (`car_id`);
END IF

关于Mysql重复外键约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39501899/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com