【问题标题】:MySQL Warning #1264 Out of rangeMySQL 警告 #1264 超出范围
【发布时间】:2013-06-15 02:26:29
【问题描述】:

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

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

谢谢

【问题讨论】:

标签: mysql


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:
      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 标志并省略所有负值 - 但从技术上讲,这是范围的移动,而不是增加。技术上。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-16
        • 2017-09-08
        • 1970-01-01
        • 2012-12-26
        • 2021-01-13
        • 1970-01-01
        • 2018-07-18
        • 2011-10-01
        相关资源
        最近更新 更多