Как сбросить AUTO_INCREMENT в MySQL? - PullRequest
1117 голосов
/ 19 января 2012

Как я могу сбросить AUTO_INCREMENT поля? Я хочу, чтобы он снова начал считать с 1.

Ответы [ 23 ]

1827 голосов
/ 19 января 2012

Вы можете сбросить счетчик с помощью:

ALTER TABLE tablename AUTO_INCREMENT = 1

Для InnoDB вы не можете установить значение auto_increment ниже или равно наибольшему текущему индексу.(цитата из ViralPatel ):

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

См. Как сбросить MySQLАвтоинкремент с использованием значения MAX из другой таблицы? о том, как динамически получить приемлемое значение.

140 голосов
/ 19 января 2012
ALTER TABLE tablename AUTO_INCREMENT = 1
67 голосов
/ 04 мая 2014
SET  @num := 0;

UPDATE your_table SET id = @num := (@num+1);

ALTER TABLE your_table AUTO_INCREMENT =1;

Я думаю, что это сделает

54 голосов
/ 19 января 2012

Просто так:

ALTER TABLE tablename AUTO_INCREMENT = value;

ссылка: http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

38 голосов
/ 04 мая 2014

enter image description here Существует очень простой способ с phpmyadmin на вкладке «операции», вы можете установить, в опциях таблицы, автоинкремент на желаемое число.

31 голосов
/ 17 сентября 2014

Лучшее решение, которое сработало для меня:

ALTER TABLE my_table MODIFY COLUMN ID INT(10) UNSIGNED;
COMMIT;
ALTER TABLE my_table MODIFY COLUMN ID INT(10) UNSIGNED AUTO_INCREMENT;
COMMIT;

Это быстро, работает с innoDB, и мне не нужно знать текущее максимальное значение!Таким образом, автоматический счетчик приращений будет сброшен и автоматически запустится с максимального значения.

19 голосов
/ 10 декабря 2013

Наиболее высоко оцененные ответы на этот вопрос рекомендуют «ALTER yourtable AUTO_INCREMENT = value».Однако это работает только тогда, когда value в alter больше текущего максимального значения столбца автоинкремента. Согласно документации MySQL 8 :

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

19 голосов
/ 19 сентября 2013

Есть хорошие параметры, приведенные в Как сбросить колонку автоинкремента MySQL

Обратите внимание, что ALTER TABLE tablename AUTO_INCREMENT = value; не работает для InnoDB

18 голосов
/ 25 сентября 2015

Добавление обновления, потому что функциональность изменилась в MySQL 5.6. Начиная с MySQL 5.6, вы можете использовать простой ALTER TABLE с InnoDB:

ALTER TABLE tablename AUTO_INCREMENT = 1;

Документы обновлены, чтобы отразить это:

http://dev.mysql.com/doc/refman/5.6/en/alter-table.html

Мое тестирование также показывает, что таблица НЕ копируется, значение просто изменяется.

12 голосов
/ 01 мая 2014
ALTER TABLE news_feed DROP id

ALTER TABLE news_feed ADD  id BIGINT( 200 ) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (id)

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

Обратите внимание, что все поля в таблице будут пересчитаны и будут иметь другие идентификаторы !!!.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...