Назад | Перейти на главную страницу

Таблица MYSQL сбрасывает автоматическое увеличение до 1, сохраняя существующие записи с идентификаторами

У меня есть таблица имен MySQL Product для классифицированного сайта, product_id - это поле AUTO_INCREMENT bigint (20).

Текущее значение AUTO_INCREMENT - 224143.

Клиент хочет, чтобы он перезапустился с 1. Но в этой таблице есть 7000 существующих STARTING с prduct_id 210235 до 224143. Пользователь может управлять своими элементами, используя его идентификатор, я не могу изменять, восстанавливать идентификаторы, но хочу перезапустить следующий АВТОИНКРЕМЕНТ с 1 и сохранить существующую запись как есть.

Заранее спасибо.

Вы не можете. MySQL автоматически установит значение auto_increment на MAX(column)+1 даже если вы использовали alter table tbl auto_increment = 1. И это ограничение имеет очень веское объяснение - дублирование ключей никогда не заканчивается хорошо.

Во-первых, я считаю, что это ужасная идея, и если вы сделаете это, вы только навлечете на себя неприятности.

Во-вторых, я не уверен, что перезапустить auto_increment счетчик обратно к 1, так как MySQL предотвратит это по уважительным причинам.

Я думаю, что лучше всего для получения желаемого поведения было бы экспортировать данные в файл (mysql -Bse "select * from table" экспортирует вкладку, разделенную по умолчанию) и импортируйте данные в новую таблицу, либо переписав идентификатор number с помощью awk / perl или повторно импортируйте данные без столбца идентификатора и позвольте ему auto_increment с 1 в новой таблице. Имейте в виду, что вам нужно будет исправить любые отношения, которые другие таблицы имеют к идентификационному номеру этой таблицы.