Колонка автоинкремента MySQL подскочила на 10- почему?

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

  1. Почему это так?

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

5 ответов

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

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

Убедитесь, что начальное значение автоинкремента не установлено в 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;

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

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

SHOW VARIABLES LIKE 'auto_inc%';

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

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

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

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

insert IGNORE into my_table set column=1
Другие вопросы по тегам