2013-08-24 3 views
0

У меня есть 2 разных сервера MySQL. Один из 5.6.12 другой 5.5.25a.Мой SQL AUto Increment

На сервере 5,5 версии я могу это сделать:

ALTER TABLE AUTO_INCREMENT = 100; 
ALTER TABLE AUTO_INCREMENT = 50; 

версия 5.6 только позволяет мне изменить auto_increment на более высокое значение, чем auto_increment находится в данный момент.

Конечно, я не пытаюсь изменить значение на меньшее значение, чем запись с максимальным значением.

Оба сервера MySQL InnoDB является

мне нужно использовать этот Commen в новейшей версии

Любого ключ?

+0

Двойная проверка, если нет значения выше или равно 50 в этом столбце. Не было никаких изменений в том, как MySQL обрабатывает столбец AUTO_INCREMENT между 5.5 и 5.6. – Mchl

ответ

1

Этот запрос работает как в MySQL 5.6.12 и 5.5.25:

ALTER TABLE `table_name` AUTO_INCREMENT =10 

По словам mysql manual:

Вы не можете сбросить счетчик на значение меньше или равно к тому, что уже были использованы. Для MyISAM, если значение меньше или равно до максимального значения, которое в настоящее время находится в столбце AUTO_INCREMENT, значение сбрасывается до текущего максимума плюс один. Для InnoDB, если значение меньше текущего максимального значения в столбце, ошибка не возникает, и текущее значение последовательности не изменяется.

Если таблица не имеет никаких записей, вы можете использовать TRUNCATE:

TRUNCATE TABLE table_name 

От mysql manual:

Любое значение AUTO_INCREMENT сбрасывается в начальное значение. Это верно даже для MyISAM и InnoDB, которые обычно не используют последовательно значения .


UPDATE: Похоже, что есть какая-то ошибка с mysql5.6.12: http://bugs.mysql.com/bug.php?id=69882

+0

Правильно, это то, что я использую. Например, с пустой таблицей: ALTER TABLE table AUTO_INCREMENT = 100; Он устанавливает значение Auto increment в 100, и это работает отлично. Проблема заключается в том, что я хочу изменить на более низкое значение, при этом таблица все еще пуста. Таблица ALTER TABLE AUTO_INCREMENT = 5; Это совсем не работает. Это проблема, которая у меня есть. –

+0

Да, но значение, которое я пытаюсь установить, ниже текущего значения автоматического увеличения и выше текущего значения максимального значения в столбце ... и оно не работает.И это ново, потому что в старой версии MySQL это работает ... ¿? –

+0

Да, но я не могу усечь, когда в таблице есть FK. Я мог бы сделать некоторые трюки, например SET FOREIGN_KEY_CHECKS = 0, но то, что я хочу знать, - это то, почему он больше не работает ... –