没有合适的资源?快使用搜索试试~ 我知道了~
DogerRain#LearnJavaToFindAJob#MySQL的自增ID用完了会怎样?1
需积分: 0 0 下载量 155 浏览量
2022-07-25
14:31:09
上传
评论
收藏 6KB MD 举报
温馨提示
试读
1、MySQL的自增ID用完了会怎样 2、达到最大值了怎么办 3、有遇到过ID用完的情况吗
资源推荐
资源详情
资源评论
我本人没有遇到这个问题,但是看到群里的小伙伴被问了,这也是个很有趣的问题,涉及MySQL的原理了,而且还是个坑,会牵涉很多问题。
> 面试官:MySQL的自增ID用完了会怎样?
>
> 小白:那插入应该有问题吧。
>
> 面试官:会报错吗?还是会覆盖其他列,还是会申请额外空间?
>
> 小白:应该会报错。
>
> 面试官:那你知道原理是什么吗?
>
> 小白:这个不清楚~
## 1、MySQL的自增ID用完了会怎样?
> MySQL版本:8.0.13
既然想知道自增ID用完了会出现什么样的结果,那干脆来测试一下。
`int`占4个字节,如果是无符号那么它最大的范围是`2^32-1 = 4,294,967,295`,约43亿。
我这里使用`int`作为主键,建表,设置最大的自增ID:
```mysql
CREATE TABLE test
(
id INT UNSIGNED auto_increment PRIMARY KEY,
name VARCHAR(20) NOT NULL DEFAULT ''
) auto_increment = 4294967295;
INSERT INTO test(`name`) VALUES ( "HaC" );
```
这个语句是插入成功的:
```mysql
mysql> select * from test;
+------------+------+
| id | name |
+------------+------+
| 4294967295 | HaC |
+------------+------+
1 row in set (0.00 sec)
```
我们此时再插入一条语句 `INSERT INTO test(name) VALUES ( "HelloCoder" );`
```mysql
mysql> INSERT INTO test(`name`) VALUES ( "HelloCoder" );
ERROR 1062 (23000): Duplicate entry '4294967295' for key 'PRIMARY'
```
以上结果说明,当再次插入时,使用的自增ID还是 `4294967295`,并不会再自增,**报主键冲突的错误**。所以说,**MySQL的自增ID用完了,会导致插入直接报错。**
原理就是设置的主键`int`的范围决定的。
## 2、达到最大值了怎么办?
相信你答出插入出错,面试官依然还�
点击阅读更多
资源评论
maXZero
- 粉丝: 21
- 资源: 303
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功