#Что означает ошибка
Duplicate entry
Вставка нарушает уникальный ключ. Проверьте дубликаты, используйте INSERT IGNORE или ON DUPLICATE KEY UPDATE.
#Причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Дубликат | В случае «MySQL: ERROR 1062 — Duplicate entry for key» проверьте наличие причины «Дубликат» по исходному действию и связанному сообщению; переходить к исправлению стоит после её подтверждения. | Проверьте. Конкретное действие зависит от проверки причины «Дубликат», описанной в пошаговой инструкции. |
| Автоинкремент | В случае «MySQL: ERROR 1062 — Duplicate entry for key» проверьте наличие причины «Автоинкремент» по исходному действию и связанному сообщению; переходить к исправлению стоит после её подтверждения. | Сбросьте |
| Повторная отправка | Сообщение о запрете доступа возникает у конкретной учётной записи; сравните её права и права нужного файла, функции либо сетевого ресурса. | Проверьте доступ нужной учётной записи и задайте только необходимые разрешения; не отключайте защиту всей системы. |
| Импорт | В случае «MySQL: ERROR 1062 — Duplicate entry for key» проверьте наличие причины «Импорт» по исходному действию и связанному сообщению; переходить к исправлению стоит после её подтверждения. | Очистите. Конкретное действие зависит от проверки причины «Импорт», описанной в пошаговой инструкции. |
#Пошаговое решение
- Определите причинуВ клиенте MySQL или phpMyAdmin откройте текст
ERROR 1062: Duplicate entry ... for key ..., запишите значение и имя уникального индекса. Посмотрите структуру таблицы черезSHOW INDEX FROM имя_таблицы;и найдите колонку или состав ключа. Не удаляйте строку просто потому, что она мешает вставке. - Выполните подходящее исправлениеВ безопасном SELECT найдите существующую запись по уникальному значению и решите, что корректно по логике приложения: обновить запись, пропустить повтор или отклонить запрос. Для повторяемого импорта может подойти
INSERT ... ON DUPLICATE KEY UPDATE, если действие согласовано; перед массовым изменением сделайте дамп. - Проверьте другие возможные причиныЕсли ключ составной, проверьте все его компоненты, нормализацию регистра и пустых значений. Для
AUTO_INCREMENTпосмотрите фактический максимальный идентификатор и значение счётчика, но не меняйте его вслепую. Дубли могут возникать из-за параллельной записи, а не ошибочного SQL. - Убедитесь в результатеСначала воспроизведите запрос на тестовой базе и убедитесь, что нужная строка вставляется или корректно обновляется без потери существующих данных. Затем повторите на рабочей системе с обычным числом параллельных запросов; отсутствие 1062 недостаточно, если приложение теперь пропускает важные записи.
#Если проблема осталась
Если «MySQL: ERROR 1062 — Duplicate entry for key» повторяется, сохраните время, состояние подключения и точный текст ошибки. Не меняйте сразу несколько настроек — иначе станет трудно понять, какое действие повлияло на результат.