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

时间:2008-10-15 22:23:07

标签: mysql

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

  1. 为什么会这样做?

  2. 这是一个问题吗?

5 个答案:

答案 0 :(得分:44)

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

您可以查看:

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

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

进行更改
SET @@auto_increment_increment=1;

如果您想以不同于1的数字开始值:

ALTER TABLE tbl AUTO_INCREMENT = 100;

答案 1 :(得分:41)

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

  

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

答案 2 :(得分:15)

感谢@Jim Fiorato提供链接。

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

SHOW VARIABLES LIKE 'auto_inc%';

+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| auto_increment_increment | 10    |
| auto_increment_offset    | 4     |
+--------------------------+-------+

答案 3 :(得分:7)

答案 4 :(得分:1)

如果在未创建记录的情况下使用带有IGNORE属性的insert,

自动注释值可以跳转

insert IGNORE into my_table set column=1