Ошибка вставки MySQL 1062 - PullRequest
       27

Ошибка вставки MySQL 1062

0 голосов
/ 25 апреля 2011

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, Keyword)).Можете ли вы помочь мне в этом? ...

Ответы [ 5 ]

4 голосов
/ 25 апреля 2011

У вас уже есть строка в вашей базе данных со значениями «18» и «бесплатная почта».У вас не может быть двух таких строк из-за уникального ограничения.У вас есть несколько вариантов:

  • Удалите исходную строку и повторите попытку вставки: DELETE FROM yourtable WHERE ID_Category = '18' AND Keyword = 'free mail'.
  • Удалите уникальное ограничение, чтобы обе строки могли существовать.
  • Используйте INSERT IGNORE, чтобы игнорировать ошибку.
  • Используйте REPLACE вместо INSERT для замены старой строки новой строкой.
  • Попытайтесь INSERT, зная, что клиентсторона будет уведомлена об ошибке.
2 голосов
/ 25 апреля 2011

Ну, это означает, что данные, которые вы вставляете, нарушают уникальные ограничения. Из сообщения об ошибке я бы сказал, что некоторые данные уже существуют с парой (18, «бесплатная почта») - вы говорите, что они должны быть уникальными.

Номер строки не является указанием, поскольку он не соответствует ключу.

1 голос
/ 25 апреля 2011

Если ваше поле ID действительно является первичным ключом, оно, скорее всего, (или должно быть) автоматически увеличено. Поэтому оставьте это поле вне запроса INSERT.

1 голос
/ 25 апреля 2011

Ваш ключ ID_category объявлен как уникальный, и поэтому вы не можете иметь две записи с одинаковым значением.

1 голос
/ 25 апреля 2011

Это ошибка MySQL с номером 1062, а не номер строки. Ошибка означает дублирование записи. Вы вставляете NULL и '18' дважды в ID и ID_Category соответственно, поэтому вы получите эту ошибку во второй раз, когда вы это сделаете. ID_Category очень вероятно имя вашего индекса. Вы можете сделать

show index from website_categorization.category_keyword

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

...