Я пытаюсь сбросить значение автоматического прироста в одной из моих таблиц на основе количества строк, находящихся в нем в настоящее время. Вот код, который у меня есть.MySQL: Сброс AUTO_INCREMENT
SET @numrows = 0;
SELECT COUNT(*) total, @numrows := COUNT(*) + 1 numrows FROM maj_user ;
ALTER TABLE `maj_user` AUTO_INCREMENT = @numrows ;
Это отлично работает, если я выполняю его в MySQL Workbench. Однако мне нужно сохранить это как файл SQL и выполнить его как часть сценария импорта базы данных. Если я это сделаю, я получаю следующее:
ERROR 1064 (42000) at line 39: You have an error in your SQL syntax; check the
manual that corresponds to your MySQL server version for the right syntax to
use near '@numrows' at line 1
Строка 39 - инструкция ALTER TABLE. Есть идеи?
Вы не должны быть настройки 'значение AUTO_INCREMENT' для' IFNULL (MAX (ID), 0) + 1' или независимо от вашего автоинкрементного столбца? По fluke это может быть то же самое, что и количество строк, но это ни в коем случае не является надежным. – tadman
При типичных обстоятельствах да. В этом конкретном случае вероятность равенства MAX и COUNT является достоверностью. – Tanoro
Итак, вы никогда, * никогда не удаляете строки? Как ваш «AUTO_INCREMENT» заканчивается в неправильном состоянии? – tadman