背景
最近在测试的时候,测试环境突然报错了,这个报错在实际的开发中还是比较熟悉的。遇见问题那就解决问题呗。
原因
由于这个报错,导致新插入的数据都存储失败,在查看数据库表以后发现有条数据的主键id值是2147483647,2147483647 是32位操作系统中最大的符号型整型常量。所以再次插入数据的时候会一直报这个数的主键冲突。
解决方案
方法一:重设表的自增值
alter table tableName AUTO_INCREMENT=0;
方法二:修改id的数据类型
把id的int类型改成了bigint,bigint的数据范围比较大。
知识补充-MySQL的数据类型
TINYINT[(M)] [UNSIGNED] [ZEROFILL]
一个很小的整数。有符号的范围是-128到127,无符号的范围是0到255
SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
一个小整数。有符号的范围是-32768到32767,无符号的范围是0到65535。
MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
一个中等大小整数。有符号的范围是-8388608到8388607,无符号的范围是0到16777215。
INT[(M)] [UNSIGNED] [ZEROFILL]
一个正常大小整数。有符号的范围是-2147483648到2147