2

我有一个配置文件数据库,并且我选择了一列 int(10) 来存储电话号码。因此,当我输入 10 位电话号码时,它会返回警告 #1264,表示该值超出范围。

我增加了 int(250) 但我仍然得到同样的错误。为什么??!

谢谢

4

3 回答 3

3

您将电话存储为具有上限的整数。32 位有符号整数的最大值为2147483647,因此如果您的电话号码大于此值,您将收到超出范围的警告。我建议将您的字段更改为大小为 10 的 VARCHAR,因为整数不是表示电话号码的好字段类型。

于 2013-06-15T02:32:37.607 回答
2

int 字段的最大值是 2147483647。将其设为 BIGINT,或者如果您需要更大的值,请使用 VARCHAR 字段。无论如何,对电话号码使用文本字段 (varchar) 是很常见的。

见:http ://dev.mysql.com/doc/refman/5.0/en/integer-types.html

于 2013-06-15T02:32:41.103 回答
0
I increased the int(250) …

不,你没有:对于所有整数类型,该值不会增加字段大小——如果字段也有ZEROFILL标志,则只会增加显示宽度。


CREATE TABLE `ints` (
  `tinyint1` tinyint(1) unsigned zerofill DEFAULT NULL,
  `tinyint4` tinyint(4) unsigned zerofill DEFAULT NULL,
  `int11` int(11) unsigned zerofill DEFAULT NULL,
  `bigint30` bigint(30) unsigned zerofill DEFAULT NULL
);

INSERT INTO ints VALUES (1, 1, 1, 1);
INSERT INTO ints VALUES (5, 5, 5, 5);
INSERT INTO ints VALUES (10, 10, 10, 10);
INSERT INTO ints VALUES (100, 100, 100, 100);

INSERT INTO ints VALUES (10212072467628961, 10212072467628961, 10212072467628961, 10212072467628961);
ERROR 1264 (22003): Out of range value for column 'tinyint1' at row 1

INSERT INTO ints VALUES (0, 0, 0, 10212072467628961);

SELECT * FROM ints;
+----------+----------+-------------+--------------------------------+
| tinyint1 | tinyint4 | int11       | bigint30                       |
+----------+----------+-------------+--------------------------------+
|        1 |     0001 | 00000000001 | 000000000000000000000000000001 |
|        5 |     0005 | 00000000005 | 000000000000000000000000000005 |
|       10 |     0010 | 00000000010 | 000000000000000000000000000010 |
|      100 |     0100 | 00000000100 | 000000000000000000000000000100 |
|        0 |     0000 | 00000000000 | 000000000000010212072467628961 |
+----------+----------+-------------+--------------------------------+
5 rows in set (0.01 sec)

正如其他人所建议的那样,您必须使用不同的整数类型:

http://dev.mysql.com/doc/refman/5.0/en/integer-types.html


“增加”有效范围的唯一方法是使用UNSIGNED标志并忽略所有负值——但这在技术上是范围的移动,而不是增加。从技术上讲。

于 2019-08-05T17:38:18.667 回答