我的知识记录

数据导入提示“Duplicate entry”主键冲突?应如何处理已有数据?

1. 主键冲突原因分析

  • 场景:导入数据时,某条记录的 PRIMARY KEY 或 UNIQUE KEY 与现有数据重复。
  • 典型报错
    
     
    bash
    ERROR 1062 (23000): Duplicate entry '123' for key 'PRIMARY'

2. 解决方案对比

方法 操作步骤 适用场景
跳过重复项 使用 INSERT IGNORE 或 LOAD DATA INFILE... IGNORE 重复数据可丢弃
替换旧数据 用 REPLACE INTO 或 ON DUPLICATE KEY UPDATE 需要覆盖历史记录
先删除再导入 执行 DELETE FROM table WHERE id IN (...) 清除冲突记录 需精准控制删除范围
临时禁用约束 设置 SET FOREIGN_KEY_CHECKS=0,导入后再恢复 外键依赖复杂时
推荐方案示例

 
sql
-- 跳过重复记录 INSERT IGNORE INTO users SELECT * FROM temp_users; -- 更新重复记录 INSERT INTO users (id, name) VALUES (1, 'John') ON DUPLICATE KEY UPDATE name = VALUES(name);

数据导入提示“Duplicate entry”主键冲突?应如何处理已有数据?

标签:MySQL主键冲突-数据导入错误-数据库去重

更新时间:2025-06-21 23:19:23

上一篇:1045错误是否影响页面加载速度?如何优化SQL性能?

下一篇:网站修改后无法启动?如何检查服务状态与日志信息?