mybatis plus 插入数据返回id_【系统架构】MySQL的自增ID用完了,插入数据会出现什么问题?...

MySQL的Int类型自增ID达到上限后,会导致插入新数据时出现主键冲突错误。当尝试在已设定最大值的自增ID上插入数据时,系统不会递增ID,而是保持不变。为了避免此类问题,应根据业务需求选择合适的数据类型,并在数据量较大时考虑分表分库。
摘要由CSDN通过智能技术生成

大家好,欢迎收看猿话!

51a37c8f1b0bc992cd32af2d173a2f7c.png

在MySQL中,数据都是有长度大小的,比如,int、varchar、char等。Int类型的数据的范围的如下:

62682bf5f0b303bb241f578c94119168.png
1bc8e095543652c48e3993c202018f22.png

一般情况下每一个主键id的初始值都是从 0 开始的,然后按照一定的步长逐步增加。在 MySQL 中只要定义了这个数的字节长度,那么就会有上限。

数据表定义的自增 ID,如果达到上限之后。再申请下一个 ID 的时候,获得到的值将保持不变。

下面通过实验来验证一下:

9be9c6740281585c6ceba03df157d65d.png

我们创建了一个表test,同时将自增id的初始值设置为4294967295,也就是假设现在自增id只剩下一个。

第一次 insert 时,记录创建成功,此时id为4294967295。但是,当我再次 insert 时,结果出现了下面的这个错误:

0467e8ce4839dacc9016cb7f80d50cf2.png

从这个结果我们可以看到,第一次插入数据的时候 id 值还是 4294967295,而当第二次插入数据时,则报主键冲突错误了,这说明自增 id 的值达到上限之后,就不会再变化了。

这刚好印证了我们上面说的。

所以,在设计数据表时,我们应该尽量根据业务需求来选择合适的字段类型。同时,当发现表中数据较多,自增id快用完时,要及时分表、分库,以避免此问题发生。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值