17
回答
mysql字段值被“劫持”?
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

请教各位:
正在使用yii开发,今天出现了个奇怪的问题:一个“手机号”字段名称为“mobile”,无论是新增记录还是更新记录,总会被一个固定的数字填充,手工在phpmyadmin中修改了,再使用程序更新还是会变成那个固定值,那个固定值应该是测试时曾经写入过的,但无论现在怎样修改,总会保存那个值。请教这是怎么回事?

举报
程更新
发帖于3年前 17回/529阅
共有17个答案 最后回答: 3年前

多谢几位,我又手工在phpmyadmin中测试了一下,不通过程序,这个字段也有问题,字段类型是“int(11)”,和它相同类型的还有其它字段,也是一样,当值达到10个数字时就会被修改为“2147483647”(这个数字应该是我测试时曾经使用过的)。删除了字段再重新添加上,还是这样。

出现错误时mysql提示:Warning: #1264 Out of range value for column 'mobile' at row 1


--- 共有 1 条评论 ---
甘薯大锅这么简单的数据表示范围溢出还用得着上来问... 3年前 回复
经测试,甚至ID字段,所有类型为int(11)的字段都是如此,值的长度达到或超过10就会变成“2147483647”!
再测试了一下不同数据库中的一张表,也是如此:类型为int(11),值达到或超过10个数字时就会变成“2147483647”,如果类型是int(10),当值达到或超过10个数字时就会自动变成“4294967295”。很显然是mysql的问题了,大家没遇到过吗?麻烦试一下你的表,也有这个情况吗?
--- 共有 2 条评论 ---
hmh我就猜到是这个问题才问你。 1、那个固定数值是什么?mobile字段 用什么类型的? 3年前 回复
寒情漠漠你先搞明白int的最大值是多少 11位的手机号你当int存当然超了 3年前 回复

找到这个答案了:int(10)与int(11)后的括号中的字符表示显示宽度,整数列的显示宽度与mysql需要用多少个字符来显示该列数值,与该整数需要的存储空间的大小都没有关系,int类型的字段能存储的数据上限还是2147483647(有符号型)和4294967295(无符号型)。

但为什么字段中会出现这两个上限值呢?

小弟弟,别逗。。。int值的最大范围是-2^32~2^32,你也不知道么,溢出了,你造不。。。好好看看书吧,任何一本教材和课本都会提到,基础太差。
顶部