【问题标题】:mysql int field growing bigger than 11 digitsmysql int字段增长大于11位
【发布时间】:2011-10-15 09:04:46
【问题描述】:

我有一个 mysql 数据库,我将它用作临时存储验证码值。它有一个自动递增的 id 键,带有 int(11) 字段。如果这个值大于 11 位会发生什么?

【问题讨论】:

    标签: mysql database integer


    【解决方案1】:

    典型的 INT 使用 4 个字节,因此可以存储数字:
    签名:-2147483648 to 2147483647
    未签名:0 to 4294967295

    BIGINT 使用 8 个字节,因此可以存储数字:
    签名:-9223372036854775808 to 9223372036854775808
    未签名:0 to 18446744073709551615

    【讨论】:

      【解决方案2】:

      这个数字 (11) 与列范围完全无关 - [SIGNED] INTEGER 定义了一个范围 (-2147483648 - 2147483647)。

      括号内的数字仅在与ZEROFILL 结合使用时使用。然后它定义了显示数字的“长度”,即。值 275552 将作为 string 00000275552 返回。

      【讨论】:

        【解决方案3】:

        正如其他人所说,您不会得到 11 位数字。当您达到最大值时,所有超过它的值都将被视为最大值。在 auto_increment 字段的情况下,它将导致所有未来的插入失败,直到您将列类型更改为 BIGINT

        ERROR 1062 (23000): Duplicate entry '4294967295' for key 1

        【讨论】:

          【解决方案4】:

          int(11) 只接受前 11 位数字。其余的将被丢弃。 您可以修改您的表格并将您的 id 数据类型从 int 更改为 bigint

          希望这会有所帮助。

          【讨论】:

            【解决方案5】:

            当您达到最大值时,所有超过它的值都将被视为最大值。在 auto_increment 字段的情况下,它将导致所有未来的插入失败,直到您将列类型更改为 BIGINT:

            【讨论】:

              猜你喜欢
              • 2011-08-03
              • 2011-02-24
              • 2011-07-19
              • 1970-01-01
              • 1970-01-01
              • 2018-03-30
              • 2012-08-27
              • 2014-10-21
              相关资源
              最近更新 更多