MySQL5.7中自增id的小bug

NO IMAGE

首先我的建表sql是這樣的:

create table if not exists `test`(
`id` bigint(20) not null AUTO_INCREMENT COMMENT 'id',
`userId` bigint(20) not null DEFAULT 0 COMMENT '學生id',
`reportId` bigint(20) not null DEFAULT 0 COMMENT '',
`comment` varchar(256) not null DEFAULT '' COMMENT '文字評價',
PRIMARY KEY (`id`),
UNIQUE KEY `index_userId_reportId` (`userId`,`reportId`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='';

然後我插入語句:

insert into test(userId,reportId) values(1,1);

成功插入一條!

然後我搞事情:

insert into test(userId,reportId) values(1,1);

聰明的你肯定看出來了,這個是會造成唯一索引衝突的!

這時候我看看錶裡面的數據:

MySQL5.7中自增id的小bug

嗯,沒錯。

然後我再插入:

insert into test(userId,reportId) values(2,1);

這時候沒錯,插入成功,再看錶中的數據:

MySQL5.7中自增id的小bug

咦,id跳過2直接到3了!

我猜應該是在發生唯一索引衝突的時候,id計數器沒有回退的原因。

以上!謝謝。

【工作中寫單元測試的時候發現的,沒有看mysql源碼,有大神懂的可以留言其中的細節,謝謝啊】

相關文章

React源碼Scheduler(一)瀏覽器的調度

Redis持久化

redis的五種數據類型基本用法總結

Hadoop學習筆記之HDFS