MySQL пропускает 2147483646 в колонке с автоинкрементом int (11) - PullRequest
0 голосов
/ 27 июня 2018

Вот мой код:

create table test3 (
    num int(11) not null auto_increment,
    primary key (num)
) auto_increment=2147483644;

insert into test3 values();
insert into test3 values();
insert into test3 values();
insert into test3 values(); //duplicate key error

select * from test3;

Вы заметите, что используются 2147483644, 2147483645 и 2147483647, но не 2147483646. Я могу вручную установить что-то на 2147483646, но я хочу понять, , почему это происходит. Мой режим автоматической блокировки innodb равен 1 (по умолчанию для моей версии).

1 Ответ

0 голосов
/ 29 июня 2018

Об этом поведении сообщалось как об ошибке ранее, здесь, в 2015 году:

Ошибка # 75941 Значение auto_increment переходит от максимального значения строки - 2 к максимальному

В комментарии к этому сообщению об ошибке утверждается, что об ошибке сообщалось много лет назад (около 2010-2011 гг.).

Исправления пока нет. Я только что протестировал MySQL 8.0.11, и поведение все еще такое, как вы описали.

Вы должны авторизоваться на сайте ошибок MySQL и нажать кнопку «Влияет на меня», если хотите увеличить приоритет ошибки.

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

...