ошибка вставки mysql 1062

#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

чтобы увидеть имя индекса.