Kategoriefehler: Element (Magento \ Katalog \ Modell \ Kategorie \ Interceptor) mit derselben ID "191" ist bereits vorhanden

9

Ich weiß, dass es ein ähnliches Problem mit einem Produkt gibt , aber jetzt habe ich diesen Fehler mit einer Kategorie.

Ich kann mich nicht erinnern, dass ich etwas anderes gemacht habe. Plötzlich wurde dieser Fehler ausgelöst, sobald ich auf eine Kategorieseite im Frontend kam.

Manchmal wurde das Problem durch erneutes Speichern der Kategorie im Administrator behoben, in den meisten Fällen jedoch nicht. Woher kommt dieser Fehler? Wie man es repariert? Ist auch jemand auf diesen Fehler gestoßen?

Bearbeiten

Es sieht so aus, als ob die Kategorieseite die URL-Umschreibungstabelle nach den URLs fragt. Es generiert diese Abfrage:

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 

Wenn Ihre url_rewrite-tabelle jedoch beschädigt ist (was in meinem Fall am wahrscheinlichsten ist), hat sie doppelte IDs.

Giel Berkers
quelle
2
Sometimes re-saving the category in the admin resolved the issueDas hat bei mir funktioniert, danke !!
Nuwaus
3
Ich habe das gleiche Problem, aber das erneute Speichern der Kategorie hilft nicht.
Oliver Schmid
Jemand eine Lösung gefunden? Ich habe das gleiche Problem, für mich ist es seltsam. Lassen Sie 10 Geschäfte erstellen, in denen nur 3 Geschäfte und 1 das Standardgeschäft ist. Die Katalogseite funktioniert, in den anderen Geschäften jedoch nicht. Ich habe eingerichtet, dass die Homepage eine Katalogseite war
Gianni Di Falco

Antworten:

11
  1. Löschen Sie Datensätze aus der Tabelle 'url_rewrite', wobei "entity_type" "category" ist.
  2. Lauf php bin/magento indexer:reindex
Nilesh Gosai
quelle
Es hat 3000
Datensätze
3
  1. Gehen Sie zu Admin Panel> Marketing> URL Rewrites.
  2. Filtern Sie nach "category / {entity_id} (was den bereits vorhandenen Fehler verursacht)" im targer_path. Wenn Sie denselben Zielpfad für denselben Speicher finden, löschen Sie diesen.
  3. Lauf php bin/magento indexer:reindex
Pribhav
quelle
3

Die folgende SQL-Abfrage bereinigt das Umschreiben doppelter Kategorien. Nicht ohne Backup verwenden.

Sie können n98-magerun2 db:consoleoder einen anderen MySQL-Client verwenden:

 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
quelle
0

Für uns hat das nur den Trick gemacht:

php bin/magento indexer:reindex

Unser Fehler (mit Magento 2.2.2) war dies bei der Frontend-Suche oder der Eingabe der Kategorie:

Ausnahme Nr. 0 (Ausnahme): Element (Magento \ Katalog \ Modell \ Produkt \ Interceptor) mit derselben ID "XXXX" ist bereits vorhanden.

Webninja
quelle
Ich weiß nicht, warum dieser Kommentar herabgestuft wurde, aber durch die Neuindizierung wurde der Fehler am 2.3.4
behoben