“唯一约束报错”通常指的是数据库在插入或更新数据时,违反了 UNIQUE 约束(如 Duplicate entry 错误)。下面按常见场景给你一套排查和解决思路。
常见报错示例(以 MySQL 为例):
Duplicate entry '张三' for key 'uk_user_name'
含义:
uk_user_name 这个唯一索引中,已经存在值为 张三 的记录。
原因:业务逻辑未做判重
解决:
INSERT IGNORE / ON DUPLICATE KEY UPDATEINSERT IGNORE INTO user(name) VALUES('张三');
-- 或
INSERT INTO user(name) VALUES('张三')
ON DUPLICATE KEY UPDATE updated_at = NOW();
原因:多个请求同时插入相同唯一值
解决:
ON DUPLICATE KEY UPDATE 兜底解决:
NOT NULL例如:
UNIQUE (user_id, role_id)
插入:
(1, 2)
(1, 2) -- 报错
解决:
原因:历史数据本身有重复
解决:
-- 查找重复数据
SELECT name, COUNT(*)
FROM user
GROUP BY name
HAVING COUNT(*) > 1;
清理后再加唯一约束。
ALTER TABLE user DROP INDEX uk_user_name;
为了给你更精准的方案,可以补充:
我可以直接帮你写 SQL 或改代码逻辑。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。