Дублирующиеся первичные ключи в таблице MySQL из-за DoS-атаки
У нас есть база данных MySQL с дублированными записями индекса первичного ключа в результате атаки DoS. Дубликаты не могут быть найдены с помощью выбора по идентификатору (он покажет только одну строку, а не две), но если вы выберете имя пользователя или пароль, он покажет две строки. Можно ли отбросить первичный ключ, удалить дублирующиеся строки и затем повторно проиндексировать первичные ключи?
Мы обнаружили, что дубликаты существовали после попытки восстановить стол.
3 ответа
Почему бы вам не сделать резервную копию таблицы и попробовать ее?
Если вы можете удалить записи из таблицы, команда sql ниже удалит самую младшую дубликат записи.
delete from table1 where ID in (select max(ID), username from table1 group by username)
Некоторые варианты от макушки головы:
Создайте новый столбец с уникальным ограничением, удалите исходный столбец и сделайте новый свой ПК.
Или создайте новую таблицу с новым PK, скопируйте все, кроме столбца дубликатов, удалите исходную таблицу и переименуйте новую.