fed7918
@fed7918

В БД съехал ID, как исправить?

У меня базе есть столбец с названием ID, из-за того, что я тестировал и удалял лишнее ячейки.
Как можно пересчитать все ячейки и сбросить autoincrement?
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
ThunderCat
@ThunderCat
{PHP, MySql, HTML, JS, CSS} developer
id не должен быть непрерывным, ид должен быть уникальным и консистентным. Не надо лезть в работу системы если не понимаете как и для чего работает именно так.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
l3ftoverz
@l3ftoverz
Люблю Финский металкор
ALTER TABLE tablename AUTO_INCREMENT = 1Но, это часто очень вредно и делать так не стоит.
Кстати, если у тебя InnoDB - указать значение ниже текущего максимального значения ты не сможешь.

Ну и это не дешево, где-то читал, что данное действие происходит примерно так:
- Создаётся новая таблица с такой же структурой
- Переносятся туда записи
- Удаление старой
- Переименовать новую

Это может занять много времени и сильно ударить по дисковому пространству, если данных много.
Не знаю, произведёт ли MySQL нормализацию данных (т.е. ID у оригиналов изменится), но если это окажется так - можно сильно пострадать, например люди давали ссылки на свой профиль: site.ru/profileID, а он почему-то резко стал другим и ссылка ведёт на какого-то Васю, можно придумать много примеров.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы