• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    SQL Duplicate entry for key ‘PRIMARY‘主键重复报错解决

    发布者: 福建二哥 | 发布时间: 2025-6-18 09:20| 查看数: 39| 评论数: 0|帖子模式

    错误原因

    报错信息“Duplicate entry '1234' for key 'USER_INFO.PRIMARY'”,尝试插入一条数据时,主键值ID=1234,已经存在于表USER_INFO中。因为键(Primary Key)是表中的唯一标识符,每个记录必须有一个唯一的主键值,所以报错
    例:
    ID(主键)USER_NAMEADDRESS1234小红武汉5678小白长沙执行如下插入sql后预期报错
    INSERT INTO USER_INFO (ID, USER_NAME, ADDRESS)  VALUES (1234, '小红', '武汉');

    解决方案


    1. INSERT IGNORE:忽略重复的插入操作,插入无效

    机制:遇到主键冲突不进行任何操作
    示例预期
    INSERT IGNORE USER_INFO (ID, USER_NAME, ADDRESS)  VALUES (1234, '小红', '武汉');
    ID(主键)USER_NAMEADDRESS1234小红武汉5678小白长沙
    2.REPLACE INTO:可以在主键冲突时替换现有记录

    机制:先尝试插入数据,如果发现主键冲突(或唯一索引冲突),则删除冲突的现有行,然后插入新行
    示例预期
    REPLACE INTO  USER_INFO (ID, USER_NAME, ADDRESS)  VALUES (1234, '小绿', '北京');
    ID(主键)USER_NAMEADDRESS1234小绿北京5678小白长沙
    3. ON DUPLICATE KEY UPDATE:可以在主键冲突时更新现有记录

    机制:先尝试插入数据,如果发现主键冲突(或唯一索引冲突),则执行update 操作,而不是删除和重新插入(设想场景:批量导入数据,如果表格中已存在主键相同信息,则以表格中信息为准,然后更新表格中的一个标识等)
    INSERT INTO USER_INFO (ID, USER_NAME, ADDRESS)  VALUES (1234, '小红', '武汉')
    ON DUPLICATE KEY UPDATE USER_NAME = '小绿'
    示例预期
    ID(主键)USER_NAMEADDRESS1234小绿武汉5678小白长沙
    4.避免重复插入、调整表结构

    到此这篇关于SQL Duplicate entry for key ‘PRIMARY‘主键重复报错解决的文章就介绍到这了,更多相关SQL 主键重复报错内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    来源:https://www.jb51.net/database/3300555l8.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表