You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL添加外键报错ERROR 1826重复外键约束名如何解决?

报错根源

ERROR 1826: Duplicate foreign key constraint name报错与主键字段是否可作为多表外键无关,核心触发逻辑为:
MySQL的外键约束名称是数据库全局唯一,而非单表维度唯一。你两次添加外键时使用了重复的约束命名,比如给CREDIT_CARD_DETAILS表加profile_id外键时用了fk_profile_id作为约束名,给TICKET_INFO表加同字段外键时复用了相同名称,就会触发重复校验报错,flight_id字段的报错逻辑完全一致。

解决方案

  • 自定义外键约束命名,遵循fk_当前表名_关联表名_关联字段的命名规则,保证全局唯一,示例SQL如下:
    给CREDIT_CARD_DETAILS表加外键:
    ALTER TABLE CREDIT_CARD_DETAILS
    ADD CONSTRAINT `fk_credit_card_passenger_profile_id`
    FOREIGN KEY (`profile_id`) REFERENCES PASSENGER_PROFILE(`profile_id`);
    
    给TICKET_INFO表加同字段外键,更换约束名即可:
    ALTER TABLE TICKET_INFO
    ADD CONSTRAINT `fk_ticket_info_passenger_profile_id`
    FOREIGN KEY (`profile_id`) REFERENCES PASSENGER_PROFILE(`profile_id`);
    
  • 若使用MySQL Workbench可视化操作添加外键,不要使用系统自动生成的默认约束名,手动在「Constraint Name」输入栏修改为符合上述规则的唯一名称即可。
  • 如需排查现有重复约束名,可执行以下SQL查询当前库所有外键约束:
    SELECT CONSTRAINT_NAME, TABLE_NAME 
    FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
    WHERE CONSTRAINT_SCHEMA = '替换为你的实际数据库名' AND REFERENCED_TABLE_NAME IS NOT NULL;
    

内容的提问来源于stack exchange,提问作者user10276750

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 11:12:00