tinyint引起的数据库表值一直是127
的有关信息介绍如下:
小编在做网站开发,测试遇到了一个问题,有一个字段的值是一直是127,为什么呢,看下文。
先看看数据库表。
数据库表如下,刚入门的我并未发现其中有什么不足之处。
直到开发进入测试阶段,发现了roomno字段的值很多都是127。roomno字段表示宿舍号,起初以为是偶然数据测试输入的。自己再测试一番,故意不输入127,可数据库插入还是127.
那么最容易想到的就是把提交的数据打印出来,调试咯。
发现提交数据没错,可为什么偏偏数据库里保存的就是127呢。
看下数据库刚刚执行的sql语句吧。
这时我就敢保证,数据从用户提交到插入到数据库,数据都是没错的,那是什么导致了该问题?恐怕这时就会想到是数据库设计的问题了。
查看数据库结构,似乎发现了可能是tinyint在捣蛋,而且127对于计算机人员来说是一个特殊的数字。
查找文档及网络资料后,发现,tinyint的取值范围是0~255或-128~127。尽管tinyint(3)这么表达并不会引起数据库错误,但它的存储字节为1,这就决定着它只能存储256个值。所以当数字大于127(unsigned情况下是255)的时候,数据库就把最大值存放进去。
实际需要需求,就得把字段类型从tinyint改为其他类型,如smallint(3)



