Колонка автоинкремента MySQL подскочила на 10- почему?
У меня есть пара таблиц, в которых я создал идентификатор объекта как Int или Bigint, и в обоих случаях они автоматически увеличиваются на 10 (т.е. первая вставка - это идентификатор объекта 1, вторая - это идентификатор объекта 11, третий идентификатор объекта 21 и т. д.). Два вопроса:
Почему это так?
Это проблема?
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