mysql报错 Duplicate entry

2024-06-08 09:36

本文主要是介绍mysql报错 Duplicate entry,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在MySQL中,当你尝试执行插入(INSERT)或更新(UPDATE)操作时,如果目标表中存在唯一索引(包括主键索引、唯一约束索引等),并且你要插入或更新的数据在该索引列上的值与表中已有的值重复,这时就会触发“Duplicate entry”错误。

具体来说,以下几种情况会导致“Duplicate entry”错误:

  1. 主键索引重复:尝试插入的记录的主键值与表中已有的主键值相同。
  2. 唯一索引重复:如果表中有一个或多个列被定义为具有唯一约束的唯一索引,而你尝试插入的数据在这些列上的值与现有记录冲突,也会触发错误。
  3. 复合唯一索引重复:当一个索引包含多个列,称为复合索引,并且定义为唯一时,只有当这些列的值组合完全相同时才视为重复。如果插入的数据在这些列的值组合上与现有记录匹配,也会报错。
  4. 插入或更新操作触发的唯一性检查失败:在执行INSERTUPDATE时,即使你没有直接修改唯一索引列,但如果操作间接导致了唯一性约束被违背(比如,更新其他列触发了唯一索引列的级联更新),同样会遇到“Duplicate entry”。

建表:

CREATE TABLE `ent_test` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主建',`pripid` char(32) NOT NULL COMMENT '主体身份代码',`ent_name` varchar(200) NOT NULL DEFAULT '' COMMENT '企业名称',`ent_code` char(18) NOT NULL DEFAULT '' COMMENT '统一社会信用代码',`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`update_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '时间戳',PRIMARY KEY (`id`),UNIQUE KEY `idx_pripid` (`pripid`),UNIQUE KEY `idx_ent_code_ent_name` (`ent_code`,`ent_name`),KEY `idx_ent_code` (`ent_code`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COMMENT='主体表'INSERT INTO ent_test (id, pripid, ent_name, ent_code, create_time, update_at) VALUES (1, '111', '企业1', 'A', '2024-06-08 07:06:04', '2024-06-08 07:19:29');
INSERT INTO ent_test (id, pripid, ent_name, ent_code, create_time, update_at) VALUES (2, '222', '企业2', 'B', '2024-06-08 07:06:04', '2024-06-08 07:19:29');
INSERT INTO ent_test (id, pripid, ent_name, ent_code, create_time, update_at) VALUES (3, '333', '企业3', 'C', '2024-06-08 07:10:21', '2024-06-08 07:19:29');

测试数据:

主键索引
# [23000][1062] Duplicate entry '1' for key 'PRIMARY'
insert into ent_test(id,pripid,ent_name,ent_code) values (1,'4','企业4','D')唯一键索引
# [23000][1062] Duplicate entry '111' for key 'idx_pripid'
insert into ent_test(id,pripid,ent_name,ent_code) values (4,'111','企业4','D')复合索引
# [23000][1062] Duplicate entry 'A-企业1' for key 'idx_ent_code_ent_name'
insert into ent_test(id,pripid,ent_name,ent_code) values (4,'444','企业1','A')

 加入ignore,只有最后一条数据没有触发索引报错

insert ignore into ent_test(id,pripid,ent_name,ent_code) values (1,'4','企业4','D');
insert ignore into ent_test(id,pripid,ent_name,ent_code) values (4,'444','企业1','A');
insert ignore into ent_test(id,pripid,ent_name,ent_code) values (4,'444','企业2','A');

这篇关于mysql报错 Duplicate entry的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1041813

相关文章

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

oracle DBMS_SQL.PARSE的使用方法和示例

《oracleDBMS_SQL.PARSE的使用方法和示例》DBMS_SQL是Oracle数据库中的一个强大包,用于动态构建和执行SQL语句,DBMS_SQL.PARSE过程解析SQL语句或PL/S... 目录语法示例注意事项DBMS_SQL 是 oracle 数据库中的一个强大包,它允许动态地构建和执行

Python Jupyter Notebook导包报错问题及解决

《PythonJupyterNotebook导包报错问题及解决》在conda环境中安装包后,JupyterNotebook导入时出现ImportError,可能是由于包版本不对应或版本太高,解决方... 目录问题解决方法重新安装Jupyter NoteBook 更改Kernel总结问题在conda上安装了

SQL 中多表查询的常见连接方式详解

《SQL中多表查询的常见连接方式详解》本文介绍SQL中多表查询的常见连接方式,包括内连接(INNERJOIN)、左连接(LEFTJOIN)、右连接(RIGHTJOIN)、全外连接(FULLOUTER... 目录一、连接类型图表(ASCII 形式)二、前置代码(创建示例表)三、连接方式代码示例1. 内连接(I

在MySQL执行UPDATE语句时遇到的错误1175的解决方案

《在MySQL执行UPDATE语句时遇到的错误1175的解决方案》MySQL安全更新模式(SafeUpdateMode)限制了UPDATE和DELETE操作,要求使用WHERE子句时必须基于主键或索引... mysql 中遇到的 Error Code: 1175 是由于启用了 安全更新模式(Safe Upd

Python安装时常见报错以及解决方案

《Python安装时常见报错以及解决方案》:本文主要介绍在安装Python、配置环境变量、使用pip以及运行Python脚本时常见的错误及其解决方案,文中介绍的非常详细,需要的朋友可以参考下... 目录一、安装 python 时常见报错及解决方案(一)安装包下载失败(二)权限不足二、配置环境变量时常见报错及

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySql死锁怎么排查的方法实现

《MySql死锁怎么排查的方法实现》本文主要介绍了MySql死锁怎么排查的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录前言一、死锁排查方法1. 查看死锁日志方法 1:启用死锁日志输出方法 2:检查 mysql 错误

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意