Подтвердить что ты не робот

Как изменить счетчик автоматического увеличения в MySQL?

У меня есть поле ID, которое является моим первичным ключом и является просто полем int.

У меня есть менее 300 строк, но теперь каждый раз, когда кто-то подписывает, что идентификатор auto inc вводится очень высоко, как 11800089, 11800090 и т.д.... Есть ли способ заставить это вернуться, чтобы он мог следовать (310 311 312).

Спасибо!

4b9b3361

Ответ 1

ALTER TABLE tbl AUTO_INCREMENT=310;

Остерегайтесь, однако, вы не хотите повторять идентификатор. Если эти цифры высоки, они как-то так поступили. Будьте уверены, что у вас нет связанных данных с более низкими идентификационными номерами.

http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

Ответ 2

Возможно, это будет более быстрый путь, но я бы это сделал, чтобы убедиться, что я воссоздаю идентификаторы;

Если вы используете MySQL или какой-либо другой SQL-сервер, вам необходимо:

  • Резервное копирование вашей базы данных
  • Отбросить столбец id
  • Экспорт данных
  • TRUNCATE или "Пусто" таблицы
  • Создайте столбец id как auto_increment
  • Reimport данные

Это уничтожит идентификаторы существующих строк, поэтому, если они важны, это не жизнеспособный вариант.

Ответ 3

Предполагаю, что вы используете mysql, потому что используете PHP. Вы можете reset auto_increment с выражением типа

 alter table mytable autoincrement=301;

Будьте осторожны, потому что вещи будут ломаться, когда значение auto inc перекрывается

Ответ 4

Счетчик автоматического приращения для таблицы может быть (повторно) установлен двумя способами:

  • Выполняя запрос, как и другие, уже объясненные:

    ALTER TABLE <table_name> AUTO_INCREMENT=<table_id>;

  • Использование инструмента Workbench или другого средства визуального проектирования баз данных. Я покажу в Workbench, как это делается - но это не должно сильно отличаться в другом инструменте. Щелкните правой кнопкой мыши нужную таблицу и выберите Alter table в контекстном меню. Внизу вы можете увидеть все доступные параметры для изменения таблицы. Выберите Options, и вы получите эту форму: введите описание изображения здесь

    Затем просто установите желаемое значение в поле Auto increment, как показано на изображении. Это будет в основном выполнять запрос, показанный в первом варианте.

Ответ 5

Я считаю, что mysql делает выбор max на id и ставит следующее. Попробуйте обновить идентификаторы вашей таблицы до нужной последовательности. Проблема, с которой вы столкнетесь, связана с тем, что они связаны, вы должны поместить Cascade в обновление на fk. Вопрос, который приходит мне на ум:

UPDATE Table SET id=(SELECT max(id)+1 FROM TAble WHERE id<700)

700 чем-то меньше, чем у 11800090 у вас есть и рядом с 300 WHERE id > 0;

Я считаю, что жалобы mysql, если вы не ставите где

Ответ 6

Я искал аналогичную проблему и нашел это решение:

SET @newID=0;
UPDATE `test` SET ID=(@newID:[email protected]+1) ORDER BY ID;
SET @c = (SELECT COUNT(ID) FROM `test`);
SET @s = CONCAT("ALTER TABLE `test` AUTO_INCREMENT = ",@c);
PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;  

Я надеюсь, что это поможет кому-то в подобной ситуации!