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`);

最终,每个外键约束重新定义成不同名称,就可以解惑这个错误了。

你可能感兴趣的