0

我对 MySql 中的数据类型长度有点困惑;我在http://dev.mysql.com/doc/refman/5.0/en/data-types.html阅读了参考手册,我知道当我写“INT(M)”时......

M 表示整数类型的最大显示宽度。对于浮点和定点类型,M 是可以存储的总位数。对于字符串类型,M 是最大长度。M 的最大允许值取决于数据类型。

然后,我在表中添加了一个字段数据类型为 INT(10) [not unsigned] 的列,我知道最大值为 -2147483648 / 2147483647

但是,如果我将其编辑为 INT(11),MySQL 允许我设置更大的长度而不会出现任何错误,尽管长度超出了范围;在这种情况下,只有当我设置一个大于 2147483647 的值时,我才会得到一个错误,为什么不是之前呢?

先感谢您,

最大限度

4

2 回答 2

1

M值不会影响您可以存储的数字范围。您可以在 中保存相同的INT(1)数字INT(30)。该数字只影响ZEROFILL行为

mysql> CREATE TEMPORARY TABLE foobar(x INT(40) ZEROFILL);
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO foobar(x) VALUES (42);
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM foobar;
+------------------------------------------+
| x                                        |
+------------------------------------------+
| 0000000000000000000000000000000000000042 |
+------------------------------------------+
1 row in set (0.00 sec)

mysql>
于 2010-12-13T18:13:23.170 回答
0

我只能推测,但我的猜测是显示宽度设置不够聪明,无法识别冲突。但是,无论如何,显示宽度只是对客户端程序的建议,我认为不必如此。

于 2010-12-13T17:58:04.610 回答