【问题标题】:MySQL autoincrement column jumps by 10- why?MySQL自动增量列跳了10-为什么?
【发布时间】:2016-10-01 07:40:13
【问题描述】:

我有几个表,我在其中创建了一个对象 ID 作为 Int 或 Bigint,在这两种情况下,它们似乎都自动递增 10(即,第一个插入是对象 ID 1,第二个是对象 ID 11 ,第三个是对象 ID 21 等)。两个问题:

  1. 为什么要这样做?

  2. 这是个问题吗?

【问题讨论】:

  • 这不是问题,尽管它可能表明希望能够在其他值之间插入值,因此依赖 id 作为排序标准。这不好。
  • 如果您担心 ID 用完太快(如果您预计会有大量记录),这也可能是个问题,因为您只使用了存储范围的 1/10。
  • 我猜你的 auto_increment_increment 由于复制而被设置为 1 以外的值。对于复制表,由于潜在的键冲突,不能使用 1。

标签: mysql


【解决方案1】:

检查自动增量的种子值是否未设置为 10。

您可以通过以下方式查看:

SELECT Auto_increment FROM information_schema.tables WHERE table_name='the_table_you_want';

如其他地方所述,您可以使用系统变量@@set_auto_increment_increment 进行更改

SET @@auto_increment_increment=1;

如果你想从一个数字以外的数字开始值,你可以去:

ALTER TABLE tbl AUTO_INCREMENT = 100;

【讨论】:

  • 哦,我发现了我的问题——这就是 auto_increment_increment 的设置方式。谢谢!
  • HQ 说改变它没有骰子,MySQL 文档说它不能在每个表的基础上改变。所以我想我将不得不忍受 1.8 quintillion ID 而不是 18.4 quintillion 的上限。
  • 您的第一个 select 语句似乎显示了序列中的下一个值是什么,而不是它增加了多少。
【解决方案2】:

自动增量增量值在 MySQL 系统变量中设置。

请看这里: http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#option_mysqld_auto-increment-increment

【讨论】:

    【解决方案3】:

    感谢@Jim Fiorato 提供链接。

    要检查自动增量值增加了多少,请使用以下查询:

    SHOW VARIABLES LIKE 'auto_inc%';
    
    +--------------------------+-------+
    | Variable_name            | Value |
    +--------------------------+-------+
    | auto_increment_increment | 10    |
    | auto_increment_offset    | 4     |
    +--------------------------+-------+
    

    【讨论】:

      【解决方案4】:

      请不要更改auto_increment_increment。 ClearDB 是故意这样做的。在the documentation中有解释:

      ClearDB 使用循环复制来提供主-主 MySQL 支持。因此,某些东西,例如 auto_increment 键(或 序列)必须配置,以便一个主不使用 在所有情况下,与另一个相同的键。我们通过配置 MySQL 来做到这一点 跳过某些键,并通过强制 MySQL 使用特定的偏移量 对于使用的每个键。我们使用值 10 而不是 2 的原因是 为未来的发展。

      【讨论】:

      • 太棒了。这对我很有帮助。谢谢。
      • 没有技术上回答这个问题,但信息非常有用。
      • 这个答案应该与接受的答案结合起来,它与当前接受的解释一样重要。
      【解决方案5】:

      如果在没有创建记录的情况下使用带有 IGNORE 属性的插入,自动增量值会跳转

      insert IGNORE into my_table set column=1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-02-05
        • 1970-01-01
        • 1970-01-01
        • 2018-12-05
        • 2012-04-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多