Mysql 5.1.42 изменить таблицу auto_increment = 0 не работает, усечение делает
Для моих автоматических приемочных тестов я хочу, чтобы вставки начинались с id=1. Я добился этого на одном ПК (XP 32bit, mysql 5.1.something) с помощью (после удаления всех строк из таблицы) "изменить имя таблицы table auto_increment = 0".
Сейчас я настраиваю новый компьютер (Windows 7 64bit, mysql 5.1.42), и эта команда, похоже, не имеет никакого эффекта. В таблице information_schema.tables я вижу, что значение auto_increment не изменяется обратно на 0 - оно просто продолжает расти. Если я попытаюсь изменить значение в этой таблице напрямую, мне скажут, что доступ запрещен "root" @ "localhost". Возможно, это подсказывает мою проблему?
Другие люди, работающие со стеком, предположили, что "усечение из tableName" является хорошей альтернативой. Я рад сообщить, что это работает. Но кто-нибудь знает, почему команда "изменить таблицу" не сбрасывает auto_increment?
Спасибо!
1 ответ
Не знаю, почему он работает на одном сервере и не работает на другом, но в руководстве MySQL говорится (цитирование, выделение мое):
Чтобы изменить значение
AUTO_INCREMENT
Счетчик, который будет использоваться для новых строк, сделайте это:ALTER TABLE t2 AUTO_INCREMENT = value;
Вы не можете сбросить счетчик до значения, которое меньше или равно значению, которое уже использовалось.
Для MyISAM, если значение меньше или равно максимальному значению, в настоящее время находящемуся вAUTO_INCREMENT
столбец, значение сбрасывается до текущего максимального плюс один.
Для InnoDB, если значение меньше текущего максимального значения в столбце, ошибка не возникает и текущее значение последовательности не изменяется.
Может быть, это причина проблемы: вы пытаетесь поставить auto_increment
обратный отсчет до 0, но он уже выше этого значения - и поскольку вы не можете сбросить его до значения, которое меньше любого значения, которое уже использовалось, оно не работает.