MySQL автоинкремент пропуск Id

122
02 мая 2019, 03:40

Использую базу данных MySQL.

После добавления оказалось, что в поле поля id с включенным автоинкрементом, имеется пропуск одного значения Id в двух местах таблицы. Это не критично, но возникает вопрос: Как это возможно?

Перед добавлением записей, таблица была очищена и автоинкемент был приведен к значению 1

Answer 1

Я вижу два варианта.

  • запись была удалена
  • попытка insert операции без сохранения. почитайте

https://dev.mysql.com/doc/refman/8.0/en/innodb-auto-increment-handling.html

Answer 2

Дополню ответ @Denys Siebov ещё одним вариантом:

2+ пользователя (или потока) одновременно добавляют записи в таблицу. В этом случае может возникнуть ситуация когда до commit оба пользователя получили два последовательных id. По какой-то причине (нарушение уникального ключа, нарушение CHECK constraint, и т.д.) одна из транзакций тихо откатилась. AUTOINCREMENT cчетчик назад не откатывается - в итоге у вас дырка в последовательности.

NOTE: AUTO_INCREMENT не гарантирует непрерывную последовательность генерируемых ID. В случае репликации дырки также могут возникать по "внутренним" для MySQL причинам.

READ ALSO
Создание Базы данных и запросов к ней

Создание Базы данных и запросов к ней

Нужно создать БД в которой есть таблица Кружок( есть название, адрес, максколичество детей), таблица Тренер, который может вести несколько...

156
Удалить дату из строчного значения

Удалить дату из строчного значения

есть колонка с примерным значением "text-text-20-11-2018"Подскажите пожалуйста, как я могу удалить эту дату из конца строк в которых она есть (есть...

138
Обрезать картинку в background:url

Обрезать картинку в background:url

Изображение: 1920х1080pxВнутри <body> конечно же есть внутренние элементы

149