解决java.sql.SQLIntegrityConstraintViolationException: Duplicate entry ‘1‘ for key ‘book.PRIMARY‘

目录

问题

原因

解决方案


问题

场景:有张图书表,主键是自增的。现在我写了个添加图书功能。因为主键是自增的我插入时无需设置主键值。

关键代码如下:

然后就报这个异常了:

找了一圈并没有发现能解决我这个问题的。最终仔细分析想了下才发现端倪,听我慢慢道来。 

原因

先说结论

原因就是自增序列的值跟表里数据的主键值不匹配

何以见得?仔细观察这两次调用报错的提示信息有何不同

你第一出现的异常信息这里是1或者其他数,这个数代表目前自增序列为你分配的主键值

 你再次调用还是会抛这个异常,但是这个值+1了。这让我瞬间想到了自增序列与当前表里数据主键不一致问题。你第一次调用mysql自增序列给你匹配了主键是1但是表里面有数据的主键是1了所以主键重复,这是mysql底层自增序列知道1重复了会进行自增++操作,这是第二次调用就会提示主键值2重复。你再次调用会提示3重复、、、、循环以往,直到自增队列的值在表里不存在了就没这个错误了。

为何会导致主键自增序列跟表里的数据主键不匹配呢?

导致我遇到这个问题的原因很简单 

CREATE TABLE Book (id INT PRIMARY KEY COMMENT '图书ID',title VARCHAR(100) NOT NULL COMMENT '标题',publisher VARCHAR(100) NOT NULL COMMENT '出版商',isbn VARCHAR(20) NOT NULL COMMENT 'ISBN号',publishDate DATE NOT NULL COMMENT '出版日期',author VARCHAR(100) NOT NULL COMMENT '作者'
);
INSERT INTO Book (id, title, publisher, isbn, publishDate, author) VALUES 
(1, 'Java编程', '清华大学出版社', '978-7-302-32950-4', '2023-12-01', '张三'),
(2, 'Python入门指南', '人民邮电出版社', '9787115423681', '2023-11-15', '李四'),
(3, 'C++ Primer Plus', '机械工业出版社', '9787111540953', '2024-01-20', '王五'),
(4, '数据结构与算法分析', '电子工业出版社', '9787121347883', '2024-02-28', '赵六'),
(5, '计算机网络', '高等教育出版社', '9787040292726', '2024-03-10', '孙七'),
(6, '数据库系统概论', '清华大学出版社', '9787302423284', '2024-04-05', '周八'),
(7, '软件工程导论', '人民邮电出版社', '9787111226532', '2024-05-18', '吴九'),
(8, '操作系统原理', '机械工业出版社', '9787111538905', '2024-06-25', '郑十'),
(9, '计算机组成原理', '电子工业出版社', '9787121270012', '2024-07-12', '钱十一'),
(10, '嵌入式系统设计', '高等教育出版社', '9787040284652', '2024-08-30', '孙十二'),
(11, '人工智能导论', '清华大学出版社', '9787302463242', '2024-09-05', '周十三'),
(12, '大数据技术与应用', '人民邮电出版社', '9787111488774', '2024-10-18', '吴十四'),
(13, '信息安全原理', '机械工业出版社', '9787111514145', '2024-11-25', '郑十五'),
(14, '移动应用开发', '电子工业出版社', '9787121209830', '2024-12-08', '钱十六'),
(15, '云计算基础', '高等教育出版社', '9787040263824', '2025-01-15', '孙十七'),
(16, '物联网技术与应用', '清华大学出版社', '9787302346727', '2025-02-20', '周十八'),
(17, '区块链原理与应用', '人民邮电出版社', '9787111530480', '2025-03-28', '吴十九'),
(18, '软件测试与质量保障', '机械工业出版社', '9787111568384', '2025-04-10', '郑二十'),
(19, 'Python数据分析', '电子工业出版社', '9787121308827', '2025-05-05', '钱二十一'),
(20, 'Java Web开发', '高等教育出版社', '9787040348033', '2025-06-15', '孙二十二');

 一开始我让al生成的表创建sql,就没指定为自增主键,但是已经初始化了20条数据,后面我才发现主键不是自增,就给修改成自增了,这是自增序列并不知道表里面有数据,主键已经排到20了。

解决方案

这很简单直接删除表,重新创建保证主键定义为自增的之后再进行插入,还有插入最好不要指定id了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/30831.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电脑桌面文件夹删除不了怎么办?6种方法快速解决,建议收藏!

桌面文件夹删不掉怎么办?有时会遇到桌面上的文件夹无法删除的问题,这是由于文件夹被系统进程或某些应用占用,或者是由于权限设置等原因造成的。以下是解决桌面文件夹无法删除问题的方法,帮助你有效地清理桌面环境。 桌面文件夹删不…

中欧科学家论坛暨第六届人工智能与先进制造国际会议(AIAM2024)

会议日期:2024年10月20-21日 会议地点:德国-法兰克福 会议官网:https://www.iaast.cn/meet/home/Bx130JiM 出版检索:EI、Scopus等数据库收录 【会议简介】 “中欧科学家论坛”由德国、法国、荷兰、瑞士、丹麦、意大利、西班牙…

欧几里得算法求解最大公约数(附代码实现,习题练习)

1.公约数、最大公约数的定义 公约数,亦称“公因数”。它是指能同时整除几个整数的数 。如果一个整数同时是几个整数的约数,称这个整数为它们的“公约数”。公约数中最大的称为最大公约数。对任意的若干个正整数,1总是它们的公因数。eg.30和4…

微信小程序常用的api(2)

动画API 创建实例 wx.createAnimation() 作用:用于在微信小程序中完成动画效果的制作 动画的常用属性 duration 【number型】 动画持续时间,单位毫秒,默认400毫秒 timingFunction 【string型】 动画效果 默认linear delay 【number型】 动…

C++回溯算法(2)

棋盘问题 #include<bits/stdc.h> using namespace std; void func(int,int); bool tf(int,int); void c(); int n,k; char a[110][110]; int cnt20; int main() {cin>>n>>k;for(int i0;i<n;i){for(int j0;j<n;j){cin>>a[i][j];}}func(0,0);cout…

交易账户实现多人下单 分仓系统 交易外接 多指令管理

交易账户实现多人下单 分仓系统 交易外接 多指令管理 指令管家下载&#xff1a;https://raw.githubusercontent.com/LeoGQ/quant/main/CommandKeeper/%E6%8C%87%E4%BB%A4%E7%AE%A1%E5%AE%B6.zip 或项目地址&#xff1a;https://github.com/LeoGQ/quant/tree/main/CommandKeeper…

在国内默默无闻的.NET,在国外火的超乎想象?

.NET开篇概述 在编程语言的竞技场上&#xff0c;.NET似乎在国内并未获得与其实力相匹配的名声&#xff0c;相较于Java和Python的广为人知&#xff0c;.NET更像是一位隐匿在幕后的高手。然而&#xff0c;当我们放眼国际&#xff0c;.NET的火爆程度却让人不得不重新审视这位“幕后…

nvm 管理多版本node

因有多个前端项目&#xff0c;不同项目使用的node版本不一样&#xff0c;所以在本地使用nvm管理不同的node版本。 一、安装nvm 1&#xff09;nvm理解 nvm全英文也叫node.js version management&#xff0c;是一个nodejs的版本管理工具。nvm和n都是node.js版本管理工具&#xff…

minIo ubuntu单节点部署

资源准备 minio二进制包 下载地址:https://dl.min.io/server/minio/release/linux-amd64/minio ubuntu-单节点部署 选择一台ubuntu18.04机器10.253.9.41、intel 或者 amd 64位处理器 上传minio到~目录 sudo cp minio /usr/local/bin/ sudo chmod x /usr/local/bin/minio 设…

2024MathorCup A题 赛后思路代码分享(分赛区一等奖)移动通信网络中 PCI 规划问题

今年突然变成分赛区 (10%) 推国&#xff0c;国奖结果还没出&#xff0c;感觉一等&#xff08;2%&#xff09;有点悬&#xff0c;论文写的太一般了我没时间去修。 4 月不务正业又被拉着打了次比赛&#xff0c;刚好这几天有闲暇&#xff0c;传一下之前写的解题思路&#xff0c;不…

PHP面试必会的20个问题

PHP是什么&#xff0c;它的全称是什么&#xff1f; PHP是一种服务器端脚本语言&#xff0c;主要用于Web开发。它的全称是Hypertext Preprocessor&#xff08;超文本预处理器&#xff09;&#xff0c;由Rasmus Lerdorf在1994年首次创建。PHP可以嵌入到HTML中&#xff0c;用于生成…

文本预处理1--去除#和句号之间内容

1.针对文本里特定两个符号之间内容的中文进行去除&#xff0c;本次选取#和句号之间的内容进行去除。 2.大家可以根据自己的实际需求修改代码实现自己的文本内容的整理。 3.下面是去除#和句号之间内容的python代码&#xff1a;其中读取的是txt文本&#xff0c;处理后的内容写回…

超声波清洗机哪家好用又实惠?四款亲测表现出色超声波清洗机安利

在当今社会&#xff0c;随着生活节奏的加快&#xff0c;年轻人越来越多地依赖眼镜来纠正视力或保护眼睛。无论是为了时尚搭配&#xff0c;还是因为长时间面对电脑和手机屏幕导致的视力问题&#xff0c;眼镜已经成为许多年轻人日常生活中不可或缺的配件。然而&#xff0c;就在我…

Python3 模块

在前面的几个章节中我们基本上是用 python 解释器来编程&#xff0c;如果你从 Python 解释器退出再进入&#xff0c;那么你定义的所有的方法和变量就都消失了。 为此 Python 提供了一个办法&#xff0c;把这些定义存放在文件中&#xff0c;为一些脚本或者交互式的解释器实例使…

Linux驱动开发(二)--字符设备驱动开发提升 LED驱动开发实验

1、地址映射 在编写驱动之前&#xff0c;需要知道MMU&#xff0c;也就是内存管理单元&#xff0c;在老版本的 Linux 中要求处理器必须有 MMU&#xff0c;但是现在Linux 内核已经支持无 MMU 的处理器了。 MMU的功能如下&#xff1a; 完成虚拟空间到物理空间的映射 内存保护&…

上海亚商投顾:创业板指低开低走 先进封装概念午后走强

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指昨日缩量震荡调整&#xff0c;深成指、创业板指跌超1%。车路云概念延续强势&#xff0c;长江通信4连板&am…

【实用性很强的重要注解记录】

1、SpringCloud相关注解 (1)ReflushScope 外部配置修改后&#xff0c;例如nacos配置被修改&#xff0c;就能以热更新的形式加载配置&#xff0c;无需重启即可生效。该注解不能单独使用&#xff0c;需要和Controller&#xff0c;Service&#xff0c;Component&#xff0c;Repos…

Python 包 dhg 中超图的数据格式

目录 1 dhg 介绍2 超图数据3 总结4 参考 1 dhg 介绍 下面是官方介绍 DHG (DeepHypergraph) 是基于 PyTorch 的深度学习包&#xff0c; 可用于图神经网络以及超图神经网络。 其支持从 顶点到顶点、从一个域的顶点到另一个域的顶点、 从顶点到超边,、从超边到顶点、从顶点集到顶点…

PFA托盘400*300*42mm耐酸碱透明聚四氟乙烯方盘方槽耐高温厂家供

PFA方盘又称托盘&#xff1a;耐高温、耐腐蚀。 进口透明可溶性聚四氟乙烯方盘。可应用于成膜实验&#xff0c;样品液体脱漏等。能放在电热板上直接加热使用&#xff0c;也可以用于烘箱烘干&#xff0c;实验室腐蚀性样品的转移和搬运&#xff0c;防止腐蚀性液体洒落。 产品特性…

C语言入门系列:数据类型之字面量类型

文章目录 一&#xff0c;什么是字面量二&#xff0c;字面量为什么需要类型&#xff1f;三&#xff0c;变量类型和字面量类型的区别1&#xff0c;作用不同2&#xff0c;方式不同 四&#xff0c;编译器如何推断字面量类型1&#xff0c;整数2&#xff0c;浮点数3&#xff0c;字面量…