Автоинкремент сбрасывается до 0 при каждом перезапуске службы - PullRequest
5 голосов
/ 13 ноября 2011

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

Ответы [ 2 ]

3 голосов
/ 17 ноября 2011

Это документированное поведение, это не ошибка.
Когда сервер запускается, он просматривает каждую таблицу (InnoDB), определяя, каким должно быть новое значение auto_increment.Начиная с http://dev.mysql.com/doc/refman/5.0/en/innodb-auto-increment-handling.html:

InnoDB использует счетчик автоинкремента в памяти, пока работает сервер.Когда сервер останавливается и перезапускается, InnoDB повторно инициализирует счетчик для каждой таблицы для первого INSERT в таблицу, как описано ранее.

При развертывании DDL происходит повторное построение таблицы.например, изменить engine - даже изменить его на то же значение, которое было раньше.

0 голосов
/ 20 марта 2014

ALTER TABLE table_name ENGINE = MyISAM

У меня работает.InnoDB сохраняет AI в памяти, поэтому он перезагружается до текущего числа строк + 1 при перезапуске сервера MySQL.Поэтому, если ваша таблица будет пустой при перезапуске сервера, она будет сброшена до 1.

MyISAM с другой стороны был хорошо построен.

...