mysql 使用ON DUPLICATE KEY UPDATE 时导致的自增主键id无限增大问题

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开始

posted @ 2020-11-27 16:52  三旌  阅读(2097)  评论(1编辑  收藏  举报