MySQL Авто прирост первичного ключа увеличивается на 10

На Azure я создал новый экземпляр базы данных MySQL. В этой базе данных я создаю таблицу, используя этот скрипт:

CREATE TABLE ROLES(
  ID INTEGER PRIMARY KEY AUTO_INCREMENT,
  ROLE_NAME VARCHAR(30) NOT NULL
);

Затем я вставляю значения, используя этот скрипт:

INSERT INTO `beezzy`.`roles` (`ROLE_NAME`) VALUES ('admin');
INSERT INTO `beezzy`.`roles` (`ROLE_NAME`) VALUES ('owner');
INSERT INTO `beezzy`.`roles` (`ROLE_NAME`) VALUES ('consultant');

после выполнения таблица содержит такие строки:

введите описание изображения здесь

Почему БД генерирует идентификаторы типа "11" и "21"? Я запускаю тот же скрипт на моей локальной машине, и все работает нормально. Идентификаторы были "1", "2", "3"

2 ответа

Решение

Пожалуйста, запустите следующий запрос.

SELECT @@auto_increment_increment

Если значение больше 1, тогда установите его на 1 по следующему запросу:

SET @@auto_increment_increment=1;

Примечание. Это изменение отображается только для текущего подключения.

РЕДАКТИРОВАТЬ:

Для того чтобы настроить его глобально, чтобы другие соединения также могли видеть изменения, вам необходимо установить его также для глобального и сеанса.

SET @@GLOBAL.auto_increment_increment = 1;

SET @@SESSION.auto_increment_increment = 1;

Таким образом, другие соединения могут увидеть это изменение сейчас.

Больше:

Это значение будет сброшено, если вы перезапустите MySQL сервер. Чтобы сделать это изменение постоянным, вам нужно записать эту переменную в [mysqld] секьон в вашем my.cnf [for linux] или же my.ini [for windows] файл.

[mysqld]
auto-increment-increment = 1

Ваш автоинкремент, вероятно, 10, но это, вероятно, по замыслу. Azure использует ClearDB, который использует автоинкремент 10 с причиной, а именно: репликация.

Когда я использую ключи (или последовательности) auto_increment в моей базе данных, они увеличиваются на 10 с различными смещениями. Зачем?

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

Вы не должны изменять значение автоинкремента.

cleardb faq

Другие вопросы по тегам