mysql 版本:5.7

python版本:3.7

问题描述:mysql表A中数据有几十条,设置了一个自增 1 的id作为主键,在程序运行一段时间后发现表中最后一条数据的id已经是几百万了

表中所有数据如下:

可以看到最大的一条id已经是四百多万了,并且id是不连续的

操作表的sql语句为:

sql = "INSERT INTO table A(xx, xx, xx, xx) VALUES('{xx}', '{xx}', '{xx}', '{xx}') ON DUPLICATE KEY UPDATE xx = '{xx}', xx = '{xx}';".format(

xx=xx, xx=xx, xx=xx, xx=xx)

即在操作table A时,先判断UNI的值是否存在,不存在则insert,存在则update

排除了一系列代码逻辑和语法的问题后,发现MySQL在使用

ON DUPLICATE KEY UPDATE

时,不论是insert还是update都会导致自增id加1

当前id:

执行三条update语句后:

id变为:

下次如果向table A中insert时,id会从6535134开始

mysql duplicate id_mysql 使用ON DUPLICATE KEY UPDATE 时导致的自增主键id无限增大问题相关推荐

  1. MySQL使用on duplicate key update时导致主键不连续自增

    在做数据统计的时候,我们经常会用到mysql的on duplicate key update语法来自动更新数据,比如 最近项目上需要实现这么一个功能:统计每个人每个软件的使用时长,客户端发过来消息,如 ...

  2. MYSQL自增主键ID重置

    MYSQL在创建一个带有自增主键ID的表时,通常在删除数据时,导致自增主键不连续了.使用下面的SQL脚本可以重置主键. -- 1.重置已有数据主键 SET @rownum = 0; UPDATE ta ...

  3. MySQL获取自增主键Id

    mysql插入数据后返回自增ID的方法   mysql和oracle插入的时候有一个很大的区别是,oracle通过获取序列的方式得到主键,mysql本身有一个列可以做自增长字段,mysql在插入一条数 ...

  4. MySQL为什么推荐自增主键ID为主键及MySQL的调优

    页的概念 在计算机里,无论是内存还是磁盘,操作系统都是按页的大小进行读取的(页大小通常为 4 kb),磁盘每次读取都会预读,会提前将连续的数据读入内存中,这样就避免了多次 IO,这就是计算机中有名的局 ...

  5. 七种MYSQL插入数据后返回自增主键ID的方法

    我们都知道,mysql中的insert插入之后会有返回值,返回的是影响的行数,也就是说,成功插入一条数据之后返回的是1,失败则返回0.那么,很多时候我们都想要得到最后插入的id值,下面七种方法均可,结 ...

  6. mysql添加数据的同时返回自增主键id

    方法一(实测可用): <insert id="add" useGeneratedKeys="true" keyProperty="id" ...

  7. mysql自增主键到头了怎么办_自增主键用完了怎么办

    在面试中,大家应该经历过如下场景 面试官:"用过mysql吧,你们是用自增主键还是UUID?" 你:"用的是自增主键" 面试官:"为什么是自增主键?& ...

  8. MySQL自增主键auto_increment原理 与 自增主键出现间隙不连续现象的定位

    一.背景: 1.1.业务描述与SQL: 为了保存机器上报信息(业务需求是每个机器只需保存最新的一条记录),原 SQL 语句如下(其中,machineId 的为唯一索引,t_report_pad 的 i ...

  9. mysql 主键 自增_MySQL自增主键详解

    一.自增值保存在哪儿? 不同的引擎对于自增值的保存策略不同 1.MyISAM引擎的自增值保存在数据文件中 2.InnoDB引擎的自增值,在MySQL5.7及之前的版本,自增值保存在内存里,并没有持久化 ...

最新文章

  1. C#中读取数据库中Image数据
  2. SAP C4C一个典型的客户Organization和employee的同步需求
  3. 前端学习(3303):函数组件组件子组件useRef聚焦
  4. [乱弹琴]关于2的讨论
  5. DOM节点的获取及创建
  6. 滴滴回应高额抽成:确实存在;抖音火山版被判赔腾讯 800 万元;华为鸿蒙系统有望下月规模化推送|极客头条...
  7. swift中的只读属性实现,很简单
  8. Ubuntu18.04安装openjdk-7-jdk
  9. 微信小程序引入iconfont图标
  10. Extjs EditorGridPanel
  11. windows系统ping端口及利用telnet命令Ping 端口
  12. MATLAB LibSVM安装——以MATLAB R2018B为例
  13. PaddleOCR 识别器数据增强
  14. python中元组拆包_Python 元组拆包示例(Tuple Unpacking)
  15. 用Python从零复现A星寻路算法 | 手撕代码#1
  16. 怎么把matlab代码输出到word,MATLAB图形输出到word中
  17. STM32配置单片机系统时钟(转)
  18. 前端刷新token,判断token是否过期,若没有过期则刷新token,过期则退出登录
  19. 围场一中2021高考成绩查询,2017围场一中录取分数线及2017高考成绩喜报
  20. 通过SparkFun制作自己的Fritzing零件

热门文章

  1. bzoj 3670 [NOI2014]动物园
  2. linux 删除已输入的命令
  3. IOS 在终端( Terminal )开发
  4. Bailian2708 平衡饮食【序列处理】
  5. Competitive Programming专题题解(1)
  6. POJ1164 The Castle【DFS】
  7. UVA10229 Modular Fibonacci 【循环数列】
  8. Spark RDD 之间的依赖关系
  9. 离散型概率分布的抽样
  10. 学习算法收敛条件的判断