Колонка автоинкремента MySQL подскочила на 10 - почему? - PullRequest
37 голосов
/ 16 октября 2008

У меня есть пара таблиц, в которых я создал идентификатор объекта как Int или Bigint, и в обоих случаях они, по-видимому, автоинкрементны на 10 (т. Е. Первая вставка - это идентификатор объекта 1, вторая - это идентификатор объекта 11 третий - идентификатор объекта 21 и т. д.). Два вопроса:

  1. Почему это происходит?

  2. Это проблема?

Ответы [ 5 ]

44 голосов
/ 16 октября 2008

Проверьте, чтобы начальное значение автоинкремента не было равно 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;
42 голосов
/ 12 августа 2015

Пожалуйста, не меняйте auto_increment_increment. ClearDB делает это специально. Это объяснено в документации :

ClearDB использует циклическую репликацию для предоставления мастер-мастера MySQL служба поддержки. Таким образом, некоторые вещи, такие как ключи auto_increment (или последовательности) должны быть настроены для того, чтобы один мастер не использовал тот же ключ, что и другой, во всех случаях. Мы делаем это путем настройки MySQL пропустить определенные ключи и принудительно использовать MySQL для использования определенного смещения для каждого используемого ключа. Причина, по которой мы используем значение 10 вместо 2, заключается в том, что для будущего развития.

15 голосов
/ 13 декабря 2013

Спасибо @Jim Fiorato за предоставленную ссылку.

Чтобы проверить, на сколько увеличивается значение автоинкремента, используйте следующий запрос:

SHOW VARIABLES LIKE 'auto_inc%';

+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| auto_increment_increment | 10    |
| auto_increment_offset    | 4     |
+--------------------------+-------+
7 голосов
/ 16 октября 2008

Значение автоматического приращения устанавливается в системных переменных MySQL.

Смотрите здесь: http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#option_mysqld_auto-increment-increment

1 голос
/ 08 января 2017
Значение

autoincriment может возрасти при использовании вставки с атрибутом IGNORE, если запись не была создана

insert IGNORE into my_table set column=1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...