数据库自增ID用完了会怎么样?

记一个数据库方面的面试题:数据库自增ID用完了会怎么样?

 

MySQL中 int 类型是4个字节,如果是有符号,那就是 [ -2^31 , 2^31-1 ], 如果是无符号,那就是 [ -2^31 , 2^32-1 ],那就是 4294967295

如果该表是需要频繁插入数据,那么是可能达到这么多数据的。

 

当数据达到这么多时,会报错:

1062 - Duplicate entry ' 2147483647 ' for key ' PRIMARY ', Time:0.000000s

 

解决办法

如果设置了主键,可以把主键改为 begint (8字节),这样又可以继续自增了

如果没有设置主键,数据库会帮我们自动生成一个全局的 row_id (2^48-1),新数据会覆盖老数据

 

 

就这样,奇怪的知识又增加了

posted @ 2021-01-07 00:19  十一的杂文录  阅读(118)  评论(0编辑  收藏  举报