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

插入数据时遇MySQL 'Duplicate entry'错误,主键无重复仍报错

MySQL主键重复插入错误(Error 1062)排查与解决

排查方向(针对已确认无id=1记录、无触发器/存储过程的情况)

  • 检查未提交事务:若之前有插入id=1的操作未提交,事务会占用主键。执行ROLLBACK;回滚未提交事务,再执行SELECT * FROM users WHERE id=1;确认。
  • 验证主键列类型与插入值匹配:执行DESCRIBE users;查看id列的数据类型,确保插入的1与列类型一致(避免INT列插入字符串类型值导致的隐式冲突)。
  • 检查额外唯一约束:执行SHOW CREATE TABLE users;查看表结构,确认是否存在包含id的联合唯一键或其他唯一约束。
  • 分区表排查:若users是分区表,可能某分区存在id=1的记录,执行SELECT * FROM users PARTITION (分区名) WHERE id=1;逐个验证分区。
  • 强制刷新查询:缓存可能导致查询结果不准确,执行FLUSH TABLES;后再查询,或用SELECT * FROM users WHERE id=1 FOR UPDATE;强制读取最新数据。

无报错插入的解决方案

如果确认不存在冲突记录仍报错,或需要兼容重复场景,可使用以下SQL:

1. 忽略重复错误(存在则跳过,不存在则插入)

INSERT IGNORE INTO users (id, name, email)
VALUES (1, 'John Doe', 'johndoe@example.com');

2. 替换现有记录(存在则覆盖,不存在则插入)

REPLACE INTO users (id, name, email)
VALUES (1, 'John Doe', 'johndoe@example.com');

3. 存在则更新,不存在则插入

INSERT INTO users (id, name, email)
VALUES (1, 'John Doe', 'johndoe@example.com')
ON DUPLICATE KEY UPDATE name='John Doe', email='johndoe@example.com';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 09:47:42