问题:
tinyint 的长度明明设置为4了,但插入500这么小的值时,却出现 “Data truncation: Out of range value for column“
原因:
tinyint(size) 中的size并不表示字节数大小。对于tinyint来说,占用的字节数固定为1。带符号的范围是-128到127,无符号的范围是0到255。
同理对于smallint,int,bigint 来说是一样的。
类型 | 占用字节 | 最小值 | 最大值 |
tinyint | 1 | -128 | 127 |
smallint | 2 | -32768 | 32767 |
mediumint | 3 | -8388608 | 8388607 |
int | 4 | -2147483648 | 2147483647 |
bigint | 8 | -9223372036854775808 | 9223372036854775807 |
补充:
tinyint(size)中size表示 ”展示宽度“ ,当字段设置为 ZEROFILL
时,查询结果会用0从左边开始填充到size位。
注:该效果我在Navicat中并没有显示出来,你们可以在终端试试。
参考链接: