【问题标题】:What happens if a int column reach the max value?如果 int 列达到最大值会怎样?
【发布时间】:2011-05-30 15:20:15
【问题描述】:

假设一个巨大的数据库。例如,我有超过 4294967295(对于 mysql INT)用户。在任何类型为 int 和 auto_increment 的列中,如果该列达到最大值会怎样?

【问题讨论】:

  • 如果您的 id 用完,您可以选择使用 UUID。例如SELECT UUID();
  • ...或选择更大的数据类型。

标签: mysql database


【解决方案1】:

int 将溢出,您将无法在该表中插入更多记录。

【讨论】:

    【解决方案2】:

    您在下一次插入时收到错误#1062 - Duplicate entry '4294967295' for key 'PRIMARY'

    【讨论】:

      【解决方案3】:

      会发生溢出,接下来会发生什么取决于数据库。

      尽管如此,您确定您的数据库中有 40 亿个条目吗?想想看。理论上的限制不会在现实世界中强加问题。

      如果您担心这样的事情,请使用 UUID。

      【讨论】:

      • 我当然没有。但我想知道,数据库在这种情况下会做什么。发生错误有意义吗?还是必须有任何解决方案?
      【解决方案4】:

      会发生错误。您可以使用 bigint(64 位),它总是比 128b 的 UUID 更好(如果您不需要它)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-26
        • 2012-02-09
        • 1970-01-01
        • 2017-07-31
        • 1970-01-01
        • 2016-08-24
        • 2016-03-25
        • 1970-01-01
        相关资源
        最近更新 更多