Erreur de catégorie: l'article (Magento \ Catalog \ Model \ Category \ Interceptor) avec le même ID «191» existe déjà


9

Je sais qu'il existe un problème similaire concernant un produit , mais j'ai maintenant cette erreur avec une catégorie.

Je ne me souviens pas que j'ai fait quelque chose de différent, tout d'un coup, j'ai commencé à lancer cette erreur dès que je suis arrivé sur une page de catégorie sur le frontend.

Parfois, la réenregistrement de la catégorie dans l'administrateur a résolu le problème, mais la plupart du temps, ce n'est pas le cas. D'où vient cette erreur? Comment le réparer? Quelqu'un d'autre a-t-il également rencontré cette erreur?

Éditer

Il semble que la page de catégorie demande à la table de réécriture d'URL les URL. Il génère cette requête:

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 

Mais si votre url_rewrite-table est corrompu (ce qui est très probable dans mon cas), il finit par avoir des ID en double.


2
Sometimes re-saving the category in the admin resolved the issueCela a fonctionné pour moi, merci !!
— nuwaus

3
J'ai le même problème, mais réenregistrer la catégorie n'aide pas.
— Oliver Schmid

Quelqu'un a trouvé une solution? J'ai le même problème, pour moi, c'est étrange. Avoir 10 magasins créés dans lesquels seulement 3 magasins et 1 est le magasin par défaut, la page de catalogue fonctionne mais pas dans les autres magasins. J'ai configuré que la page d'accueil était une page de catalogue
— Gianni Di Falco

Réponses:


11
  1. Supprimez les enregistrements de la table 'url_rewrite' où "entity_type" est "category".
  2. courir php bin/magento indexer:reindex

Il a 3000 enregistrements, donc je dois tronquer le tableau pour que cela fonctionne :(
— fudu

3
  1. Accédez à Panneau d'administration> Marketing> Réécriture d'URL.
  2. Filtrer par "catégorie / {entity_id} (ce qui provoque l'erreur déjà existante)" dans le targer_path. Si vous trouvez le même target_path pour le même magasin, supprimez celui-ci.
  3. Courir php bin/magento indexer:reindex

3

La requête SQL suivante nettoie les réécritures de catégorie en double. Ne pas utiliser sans sauvegarde.

Vous pouvez utiliser n98-magerun2 db:consoleou tout autre client 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
  )

0

Pour nous, le simple fait de faire ça a fait l'affaire:

php bin/magento indexer:reindex

Notre erreur (avec Magento 2.2.2) était la suivante lors de la recherche frontale ou de l'entrée dans la catégorie:

Exception # 0 (Exception): l'article (Magento \ Catalog \ Model \ Product \ Interceptor) avec le même ID "XXXX" existe déjà.


Je ne sais pas pourquoi ce commentaire est minimisé, mais la réindexation a en fait corrigé l'erreur le 2.3.4
— puntable
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.