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