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