Как исправить значение автоинкремента после OPTIMZE TABLE? - PullRequest
1 голос
/ 02 ноября 2011

У меня есть таблица InnoDB, в которую я часто вставляю и удаляю строки.

Я заметил, что после выполнения оператора удаления в последних нескольких строках и запуска таблицы оптимизации, автоинкремент возвращается к максимальному (id) + 1

Рассмотрим следующую последовательность событий

Таблица: запросы

Auto Increment is: 150, INSERT ROW (id 150)
Auto Increment is: 151, INSERT ROW (id 151)
Auto Increment is: 152, INSERT ROW (id 152)
Auto Increment is: 154

DELETE from requests where id in (151,152)

OPTIMIZE TABLE requests

Auto increment is: 151.

Я хочу найти способ избежать этого сценария.

Любая помощь приветствуется.

Редактировать : Я только что попробовал, и то же самое происходит, когда я перезапускаю службу mysql вместо оптимизации таблицы

1 Ответ

2 голосов
/ 02 ноября 2011

Кажется, что MySQL уже работает над исправлением этой проблемы - http://bugs.mysql.com/bug.php?id=18274.

Но между тем вы можете вручную установить значение автоинкремента на то, каким оно должно быть после завершения OPTIMIZE TABLE.

Кстати, есть ли конкретная причина, почему вы хотели бы сохранить значение автоинкремента до того, что было до ОПТИМИЗАЦИИ?Потому что я не думаю, что автоинкрементный сброс должен что-то сломать, если у вас нет DELETE CASCADE для ваших внешних ключей.

...