MySQL Error number: 3939; Symbol: ER_MULTIPLE_CONSTRAINTS_WITH_SAME_NAME; SQLSTATE: HY000 报错 故障修复 远程处理
文档解释
Error number: 3939; Symbol: ER_MULTIPLE_CONSTRAINTS_WITH_SAME_NAME; SQLSTATE: HY000
Message: Table has multiple constraints with the name ‘%s’. Please use constraint specific ‘%s’ clause.
ER_MULTIPLE_CONSTRAINTS_WITH_SAME_NAME,错误号3939,是数据库中会出现的一个MySQL错误码,其SQLSTATE码统一定位为 ‘HY000’。该错误相对比较少见,是数据完整性中难以捉摸的体现。
错误说明:MySQL错误代码ER_MULTIPLE_CONSTRAINTS_WITH_SAME_NAME是指在同一数据表中,存在复数外键约束,其名称又重复的情况,由于外键约束也是一种唯一的约束,因此,系统自动拒绝,以避免覆盖旧数据。
常见案例
解决方法:首先要根据报错来确定某个表中外键名称重复的字段,然后可以通过 MySQL 命令删除重复的外键约束,在删除约束时不要忘记在关键词约束后面加上约束的名称,如:
— 删除重名的外键约束
ALTER TABLE `database_name`.`table_name`
DROP FOREIGN KEY `dup_fkey_name`;
— 在表创建新的外键约束
ALTER TABLE `database_name`.`table_name`
ADD CONSTRAINT `new_fkey_name`
FOREIGN KEY `new_fkey_name` (`ref_fkey_col`)
REFERENCES `database_name`.`table_name`(`ref_fkey_col`);
最终,每个外键约束重新定义成不同名称,就可以解惑这个错误了。