#mysql #mysql-error-1062
#mysql #mysql-ошибка-1062
Вопрос:
SQL-запрос:
INSERT INTO `website_categorization`.`category_keyword` (
`ID` ,
`ID_Category` ,
`Keyword` ,
`Score`)
VALUES (
NULL , '18', 'free mail', ''
), (
NULL , '18', 'web email free', ''
)
MySQL сказал:
#1062 - Duplicate entry '18-free mail' for key 'ID_Category'
Он показывает эту ошибку повторяющейся записи, даже если в строке № 1062 нет записи. (ИДЕНТИФИКАТОР является первичным ключом и уникальным (ID_Category, ключевое слово) ).
Можете ли вы помочь мне в этом?…
Ответ №1:
В вашей базе данных уже есть строка со значениями ’18’ и ‘бесплатная почта’. У вас не может быть двух таких строк из-за ограничения уникальности. У вас есть несколько вариантов:
- Удалите исходную строку и повторите попытку вставки:
DELETE FROM yourtable WHERE ID_Category = '18' AND Keyword = 'free mail'
. - Удалите ограничение уникальности, чтобы разрешить существование обеих строк.
- Используйте
INSERT IGNORE
, чтобы игнорировать ошибку. - Используйте
REPLACE
вместоINSERT
, чтобы заменить старую строку новой строкой. - Попробуйте
INSERT
, зная, что клиентская сторона будет предупреждена об ошибке.
Ответ №2:
Ну, это означает, что данные, которые вы вставляете, нарушают уникальные ограничения. Из сообщения об ошибке я бы сказал, что некоторые данные уже существуют с парой (18, «бесплатная почта») — вы говорите, что они ограничены уникальностью.
Номер строки не является указанием, поскольку он не соответствует ключу.
Ответ №3:
Ваш ключ ID_category объявлен уникальным, и, следовательно, у вас не может быть двух записей с одинаковым значением.
Ответ №4:
Если ваше ID
поле действительно является первичным ключом, оно, скорее всего (или должно быть) автоматически увеличиваемым. Поэтому исключите это поле из запроса INSERT.
Ответ №5:
Это номер ошибки MySQL 1062, а не номер строки. Ошибка означает дублирующуюся запись. Вы дважды вставляете NULL и ’18’ в ID и ID_Category соответственно, поэтому эта ошибка будет выдана во второй раз, когда вы это сделаете. ID_Category
очень вероятно, что это название вашего индекса. Вы можете выполнить
show index from website_categorization.category_keyword
чтобы увидеть имя индекса.