Ошибка категории: Элемент (Magento \ Каталог \ Модель \ Категория \ Перехватчик) с таким же идентификатором «191» уже существует

9

Я знаю, что есть аналогичная проблема с продуктом , но теперь у меня есть эта ошибка с категорией.

Я не могу вспомнить, что я сделал что-то другое, он внезапно начал выдавать эту ошибку, как только я попал на страницу категории на веб-интерфейсе.

Иногда повторное сохранение категории в админке решало проблему, но в большинстве случаев это не так. Откуда эта ошибка? Как это исправить? Кто-нибудь еще сталкивался с этой ошибкой тоже?

редактировать

Похоже, страница категории запрашивает таблицу перезаписи URL для URL. Он генерирует этот запрос:

SELECT `e`.*, 
   IF(at_is_active.value_id > 0, at_is_active.value, 
   at_is_active_default.value) AS 
   `is_active`, 
   `url_rewrite`.`request_path` 
FROM   `catalog_category_entity` AS `e` 
   INNER JOIN `catalog_category_entity_int` AS `at_is_active_default` 
           ON ( `at_is_active_default`.`entity_id` = `e`.`entity_id`) 
              AND ( `at_is_active_default`.`attribute_id` = '46' ) 
              AND `at_is_active_default`.`store_id` = 0 
   LEFT JOIN `catalog_category_entity_int` AS `at_is_active` 
          ON ( `at_is_active`.`entity_id` = `e`.`entity_id` ) 
             AND ( `at_is_active`.`attribute_id` = '46' ) 
             AND ( `at_is_active`.`store_id` = 1 ) 
   LEFT JOIN `url_rewrite` 
          ON ( url_rewrite.entity_id = e.entity_id ) 
             AND ( url_rewrite.is_autogenerated = 1 
                   AND url_rewrite.store_id = 1 
                   AND url_rewrite.entity_type = 'category' ) 
WHERE  ( IF(at_is_active.value_id > 0, at_is_active.value,   
     at_is_active_default.value) 
            = 
            '1' ) 
   AND ( `e`.`entity_id` IN( '10', '170', '171', '172', 
                             '173', '175', '176', '177', 
                             '178', '179', '180', '189', '276' ) ) 
ORDER  BY `e`.`position` ASC 

Но если ваша url_rewriteтаблица повреждена (что, скорее всего, в моем случае), это приведет к дублированию идентификаторов.

Гиль Беркерс
источник
2
Sometimes re-saving the category in the admin resolved the issueЭто сработало для меня, спасибо!
nuwaus
3
У меня та же проблема, но повторное сохранение категории не помогает.
Оливер Шмид
Кто-то нашел исправление? У меня та же проблема, для меня это странно. Создайте 10 магазинов, в которых только 3 магазина, и 1 - магазин по умолчанию, страница каталога работает, а в других - нет. Я установил, что главной страницей была страница каталога
Джанни Ди Фалько
Решение: magento.stackexchange.com/questions/121021/…
Рахул Шукла

Ответы:

11
  1. Удалите записи из таблицы «url_rewrite», где «entity_type» - это «категория».
  2. запустить php bin/magento indexer:reindex
Нилеш Госай
источник
Он имеет 3000 записи, поэтому я усечь таблицу , чтобы сделать эту работу :(
Fudu
3

Следующий SQL-запрос очищает повторные записи категорий. Не используйте без резервной копии.

Вы можете использовать n98-magerun2 db:consoleлюбой другой клиент MySQL:

 delete
  from url_rewrite
  where url_rewrite_id in (
    select url_rewrite_id
    FROM (select url_rewrite_id
      from url_rewrite
      where entity_type = 'category'
      group by target_path, store_id
      having count(*) > 1) t
  )
Alex
источник
3
  1. Перейдите в Админ-панель> Маркетинг> URL переписывает .
  2. Фильтровать по «category / {entity_id} (которая вызывает уже существующую ошибку)» в targer_path . Если вы найдете один и тот же target_path для того же магазина, удалите его.
  3. Запустить php bin/magento indexer:reindex
Pribhav
источник
0

Для нас просто запуск этого сделал свое дело:

php bin/magento indexer:reindex

Наша ошибка (в Magento 2.2.2) заключалась в следующем: при поиске по интерфейсу или при входе в категорию:

Исключение № 0 (Исключение): Элемент (Magento \ Каталог \ Модель \ Продукт \ Перехватчик) с таким же идентификатором "XXXX" уже существует.

WebNinja
источник
Не знаю, почему этот комментарий недооценен, но переиндексация фактически исправила ошибку в 2.3.4
наказуемо