美文网首页
mysql数据插入失败,插入成功后主键跳过自增

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

作者: LeftJoin | 来源:发表于2017-07-20 16:26 被阅读0次

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

先简单说明下环境。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

相关文章

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

    昨天在调试一个业务代码中,无意间发现了一个问题。数据入库后的主键不是连续自增的,主键键值没过几秒就从两千多直接跳到...

  • 使用JDBC返回主键

    在使用主键自增(如 MySQL、 SQL Server 数据库)时,插入数据库后可能需要得到自增的主键值,然后使用...

  • MyBatis 实现主键回写

    当我们向数据库插入数据时,主键是设置的自增的,但是我们插入好数据库后,我们希望得到刚刚插入的数据的主键,mybat...

  • 一个mysql主键自增的问题

    mysql数据库,存储引擎innbodb,主键选择自增,当插入数据并回滚后下次提交事务的时候主键的值是多少? 首先...

  • mybatis 返回新增自增主键id

    场景: 当我们设计数据库表主键id为自增主键时,通过mybatis新增插入一条数据,我们期望返回当前插入数据的主键...

  • MySQL数据表中有自增长主键时如何插入数据

    MySQL数据库表中有自增主键ID,当用SQL插入语句中插入语句带有ID列值记录的时候; 如果指定了该列的值,则新...

  • mysql设置主键的自增

    MySQL数据库表中有自增主键ID,当用SQL插入语句中插入语句带有ID列值记录的时候; 如果指定了该列的值,则新...

  • mybatis insert 返回id

    我们在使用mysql插入数据的时候,通常会有这样一个需求:当表的主键id是自增字段的时候,会想要获得插入的id值用...

  • mysql主键设为自增int降低iops

    前段时间做了一次数据库主键uuid改为自增int降低插入数据iops的小小实践,当然影响插入iops的不仅仅是主键...

  • 解决MySQL在Insert和delete后主键自增ID不连续

    比如我有个Specs表,里头有个spec_id是主键切自增。 插入数据 然后删除数据 如果这个时候我再插入数据,会...

网友评论

      本文标题:mysql数据插入失败,插入成功后主键跳过自增

      本文链接:https://www.haomeiwen.com/subject/sgcjkxtx.html