异常内容
SQL 错误 [1062] [23000]: Duplicate entry ‘xxxx’ for key ‘xxxx’
分析异常
如果报错内容如上所示,原因该表有一列唯一索引或者多列添加了联合唯一索引
解决方案
1.找到唯一索引
SQL操作
-- 查看表的所有约束
show keys from tableName;
-- 查看约束名为name_unique的主键
show keys from tableName where key_name = 'name_unique';
Navicat客户端操作

2.解决方式
SQL操作
2.1找到该表的重复数据,根据业务场景删除重复的数据即可
select fieldname,count(fieldname) from tablename group by fieldname having count(fieldname) > 1;
2.2删除该表唯一索引或者联合唯一索引
复制代码
-- 删除name_unique的约束
alter table tablename drop index name_unique;
-- 创建名为name_unique的联合唯一约束(2个字段联合唯一)
alter table tablename add unique key name_unique ( name,parent_id);
附言
需要明确的是,在MySQL中,如果仅考虑自增主键的情况下,例如,已创建id为2,3,4的记录,若把id为3的记录删除,那么后续通过insert插入数据时,可以指定id为3,这是需要明确的基础知识。

2127

被折叠的 条评论
为什么被折叠?



