MySQL自动增量列跳了10-为什么?

38 mysql

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

  1. 为什么这样做?

  2. 那是问题吗?

Jam*_*rue 44

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

您可以查看:

SELECT Auto_increment FROM information_schema.tables WHERE table_name='the_table_you_want';
Run Code Online (Sandbox Code Playgroud)

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

SET @@auto_increment_increment=1;
Run Code Online (Sandbox Code Playgroud)

如果你想以不同于1的数字开始值,你可以去:

ALTER TABLE tbl AUTO_INCREMENT = 100;
Run Code Online (Sandbox Code Playgroud)

  • 您的第一个select语句似乎显示序列中的下一个值是什么,而不是它递增多少. (11认同)

小智 42

请不要改变auto_increment_increment.ClearDB是故意这样做的.它在文档中解释:

ClearDB使用循环复制来提供master-master MySQL支持.因此,必须配置某些内容,例如auto_increment键(或序列),以便一个主机在所有情况下都不使用相同的密钥.我们这样做是通过配置MySQL来跳过某些键,并强制MySQL为每个使用的密钥使用特定的偏移量.我们使用10而不是2的原因是为了将来的发展.

  • 不*技术上*回答问题,但仍然是非常有用的信息. (3认同)

use*_*969 16

感谢@Jim Fiorato提供的链接.

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

SHOW VARIABLES LIKE 'auto_inc%';

+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| auto_increment_increment | 10    |
| auto_increment_offset    | 4     |
+--------------------------+-------+
Run Code Online (Sandbox Code Playgroud)