【问题标题】:MySQL Changed Auto Increment to Negative NumberMySQL 将自动增量更改为负数
【发布时间】:2013-11-07 19:33:36
【问题描述】:

由于某种原因在工作表上,它突然将主键自动增量更改为负数。我一辈子都想不通为什么。

2147514979
2147514980
2147514981
-2147514982
-2147514983

知道是什么原因造成的吗?

【问题讨论】:

  • 听起来像是 32 位整数溢出...
  • 如果溢出,负数将开始“向上”计数,接近于零。
  • @PaulProgrammer 是对的,32 位有符号整数阈值是 2147483647,它会增加到 -2147483648
  • @PaulProgrammer D'oh,那怎么样。是时候离开电脑了。
  • 是的,但也许你们假设所有的 id 都在那里。所以也许如果缺少一些,内部表示没有溢出,显示的 id 已经溢出。

标签: mysql auto-increment negative-number


【解决方案1】:

在许多约定中,一位用作数字“符号”的标志。

10000001 相当于 -1,10000011 相当于 -3,而 00000011 相当于 3

注意,这只是一个插图。通常 -1 实际上是 11111111 但这就是原则。

显然这不应该发生,这意味着这不是用户错误,而是某种程度的错误。就像主要的 mysql 代码可以很好地处理数字一样,但是其他地方的函数正在溢出。这都是猜想,但就负号而言,我会说这绝对是由于位作为符号约定。

【讨论】:

    猜你喜欢
    • 2015-09-30
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 2010-12-01
    • 1970-01-01
    • 2011-06-10
    • 1970-01-01
    相关资源
    最近更新 更多