Как добавить ключ в таблицу MariaDB, которая уже содержит данные? - PullRequest
0 голосов
/ 29 апреля 2019

Я пытаюсь изменить свою таблицу с MySQL, но на ALTER будет отображаться ошибка:

# 1062 - Дублирующая запись '5009-daring-1' для ключа 'doctermitem'

SQL-запрос:

ALTER TABLE `wpi4_asp_index`
  ADD UNIQUE KEY `doctermitem` (`doc`,`term`,`blogid`),
  ADD KEY `term_ptype_bid_lang` (`term`(20),`post_type`(20),`blogid`,`lang`(10)),
  ADD KEY `rterm_ptype_bid_lang` (`term_reverse`(20),`post_type`(20),`blogid`,`lang`(10))

Как я могу решить эту ошибку?

Ответы [ 2 ]

0 голосов
/ 29 апреля 2019

Столбцы, на которые вы нацеливаетесь для уникального ключа, не являются уникальными - есть хотя бы одна строка, которая дублируется, может быть больше.

Найдите их с помощью оператора SQL:

select doc,
      term,
      blogid,
      count(*)
from wpi4_asp_index
group by doc,
      term,
      blogid
having count(*) > 1

Затем вам придется решить, в чем заключается проблема и как ее устранить.Вообще говоря, есть две вероятные причины:

  • У вас неверные данные.Исправьте данные, например, удалив дубликаты.
  • Ваши предположения об уникальности неверны - вам может понадобиться добавить дополнительный столбец к вашему уникальному ключу.
0 голосов
/ 29 апреля 2019

Вы пытаетесь создать doctermitem как UNIQUE KEY, но в этой комбинации уже есть повторяющиеся записи (как вы упомянули '5009-daring-1'), поэтому не разрешается добавлять doctermitem как UNIQUE KEY.

Вам нужно вручную удалить эти дублирующиеся комбинации значений, тогда это позволит создать UNIQUE KEY

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...