MySQL报错!Data truncation: Out of range value for colum

表面上看是字段设置的不够长,其实这里面隐藏一个小知识,关于无符号数和有符号数
今天项目表中有一个userId int(11)和mobilephone varchar(11)字段 因为某种业务需求 这两个字段设置的内容一样;
varchar类型存手机号 肯定没问题 手机号就是11位;但是存userId的时候 就不行了,我们知道:

对于 int类型来说 存储有符号数 和 无符号数的 范围是不一样的:
有符号数:[-2^31, 2^31 - 1]
无符号数:[0, 2^32 - 1]
int(11)默认是存储的有符号的数 int(10)默认存储无符号数 也就是 unsigned int
int(11)和int(10)指标是存储之后显示的位数 并不是标识可以存储的位数 有最大值的限制 跟这个括号里面的无关

这次我存储的数值超过了int 的范围 所以改成bigint
整型范围图
点击详细了解范围
记录一下 开发当中遇到的小bug 共勉

猜你喜欢

转载自blog.csdn.net/blackxc/article/details/107564180