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.