mysql写入失败主键也会增加_数据插入失败引发的主键auto_increment问题

  • Post author:
  • Post category:mysql


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

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

问题重现

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

表结构如下:

CREATE TABLE `test_innodb` (

`id` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘自增ID’,

`username` varchar(100) NOT NULL COMMENT ‘用户名’,

PRIMARY KEY (`id`),

UNIQUE KEY `UNIQUE_USERNAME` (`username`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8

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

INSERT INTO test_innodb (`username`) VALUES(‘admin’);

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

Duplicate entry ‘admin’ for key ‘UNIQUE_U



版权声明:本文为weixin_33251169原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。