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.
Sometimes re-saving the category in the admin resolved the issue
Cela a fonctionné pour moi, merci !!Réponses:
php bin/magento indexer:reindex
la source
php bin/magento indexer:reindex
la source
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:console
ou tout autre client mysql:la source
Pour nous, le simple fait de faire ça a fait l'affaire:
Notre erreur (avec Magento 2.2.2) était la suivante lors de la recherche frontale ou de l'entrée dans la catégorie:
la source