mysql数据插入失败,插入成功后主键跳过自增

昨天在调试一个业务代码中,无意间发现了一个问题。数据入库后的主键不是连续自增的,主键键值没过几秒就从两千多直接跳到了五千上下。这是为什么?瞬间引起我的注意。

先简单说明下环境。Mysql版本:5.6.23。为了防止某些数据重复,数据库中对某些字段设置了唯一索引,即unique key。经确认此表也只有一个业务程序在操作。那么,问题就定位到主键的auto_increment属性上了。

题重现

下面来还原问题,以便能准确查找出原因。

表结构如下:

CREATETABLE`test_innodb`(`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'自增ID',`username`varchar(100)NOTNULLCOMMENT'用户名',  PRIMARYKEY(`id`),UNIQUEKEY`UNIQUE_USERNAME`(`username`) )ENGINE=InnoDBDEFAULTCHARSET=utf8

username字段设置了唯一索引(unique key)。先插入一条数据:

INSERTINTOtest_innodb (`username`)VALUES('admin');

执行成功,主键ID为“1”。再次执行此SQL,因username重复,数据入库失败,提示:

Duplicate entry'admin'forkey'UNIQUE_USERNAME'

说明insert的时候 数据库是先自增主键 然后再插入数据

转https://www.marser.cn/tag/mysql.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容