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