La réindexation de Magento 2 ne revient pas

14

J'ai réussi à migrer le catalogue de Magento 1.9.2.3 vers Magento 2.0.2. Après la migration, j'ai réindexé à l'aide de la commande php bin/magento indexer:reindex.

Tout est réindexé avec succès, sauf les index catalog_category_productet catalog_product_category, le retour No such entity.en shell et la notification Reindex Requireden admin. J'ai vérifié var/log/mais aucune erreur.

Par conséquent, les produits sont ajoutés aux catégories dans le backend mais les catégories apparaissent vides sur le frontend.

Qu'est-ce qui pourrait causer ce problème? Comment puis-je déboguer?

Gerard de Visser
la source
essentiellement le même magento.stackexchange.com/questions/102739/…
Patrick-Peng

Réponses:

7

En plus de Raphael:

J'ai débogué ce code en modifiant le constructeur d'exceptions à des fins de débogage (soit par xdebug soit par d'anciennes sauvegardes). Modifiez la construction de l'exception pour l'instant (le fichier est \lib\internal\Magento\Framework\Exception\NoSuchEntityException.php)

$trace = debug_backtrace();
var_dump($trace[1]['class'] . '::' . $trace[1]['function'] . '('.$trace[1]['line'] .')';
die();

Ensuite, montez une pile et vérifiez les arguments donnés (les arguments sont également disponibles dans la trace de débogage, mais le vidage d'objets magento n'est pas vraiment convivial pour le navigateur).

Je suis arrivé à la conclusion que c'était dans le storeGroupRepositorycas où il ne pouvait pas trouver l'identifiant du groupe. Plongé dans les tables du magasin et vu quelques lignes dans la table du magasin qui faisaient référence à un store_groupqui n'était pas dans la store_grouptable (le groupe de magasins n'existe pas dans la table pertinente).

Suppression des lignes de magasin défectueuses et l'erreur a disparu depuis.

Mais gardez à l'esprit que cela peut également être dans une autre table / autre raison. par exemple, site Web, magasin lui-même ou groupe de magasins dans ce cas. C'est donc toujours une petite recherche que vous devez effectuer vous-même.

A également découvert qu'il y avait beaucoup de références à ces magasins et les a également supprimées manuellement dans la base de données. Cela peut être un travail fastidieux mais cela résoudra le problème.

Et n'oubliez pas de supprimer vos hacks.

TimVroom
la source
pourquoi n'utilisez-vous pas xdebug à la place?
Luke
@TimVroom J'ai également la même erreur.Merci de m'aider magento.stackexchange.com/q/236187/24878
akgola
11

Je ne sais pas si c'est trop tard pour l'ajouter, mais quand je l'ai eu, cela semblait provenir de certains identifiants d'entité qui devaient être définis sur 0.

Ce script a fonctionné pour moi:

SET FOREIGN_KEY_CHECKS=0;
UPDATE `store` SET store_id = 0 WHERE code='admin';
UPDATE `store_group` SET group_id = 0 WHERE name='Default';
UPDATE `store_website` SET website_id = 0 WHERE code='admin';
UPDATE `customer_group` SET customer_group_id = 0 WHERE customer_group_code='NOT LOGGED IN';
SET FOREIGN_KEY_CHECKS=1;

J'espère que cela aide.

Adam Stacey
la source
cela m'a beaucoup aidé, merci du partage!
favo
Cela a également fonctionné pour moi :)
Owen
3

Ok donc le No such entity.message d'erreur vient \lib\internal\Magento\Framework\Exception\NoSuchEntityException.php.

Cette classe est une classe d'exception personnalisée de Magento et elle est beaucoup utilisée dans Magento 2.

Chaque fois que vous voyez du code comme:

catch (NoSuchEntityException $e)

Ou

throw NoSuchEntityException;

Cette classe est utilisée.

Le problème dans votre cas est qu'il est difficile de savoir d'où cette exception est levée.

Donc, pour affiner un peu, vous pouvez commencer à déboguer les deux classes liées à vos index qui échouent:

  • Magento\Catalog\Model\Indexer\Category\Product=> index catalog_category_product
  • Magento\Catalog\Model\Indexer\Product\Category=> index catalogue_produit_catégorie

Heureusement, le second prolonge le premier, vous avez donc un point de départ.

Vous devez garder à l'esprit que chacune de ces classes d'indexeur utilise des classes de lignes d'action pour traiter la réindexation:

  • Magento\Catalog\Model\Indexer\Product\Category\Action\Rows
  • Magento\Catalog\Model\Indexer\Category\Product\Action\Rows

Pour moi, c'est là que vous devriez commencer le débogage car ces classes de lignes d'action sont les classes directes qui réindexent ces deux index.

J'espère vraiment que cela vous aidera à trouver votre problème.

Raphael chez Digital Pianism
la source
Bonjour @Raphael, j'ai un problème similaire pour la création de clients après la migration.Merci de m'aider magento.stackexchange.com/q/236187/24878
akgola
0

Cela a fonctionné pour moi après avoir essayé tout.

En supposant que votre site se trouve dans Developer Mode, vous pouvez le modifier Production Modeet effacer / vider le cache, puis revenir à Developer Mode.

J'ai eu ce problème à l'avant, car j'ai récemment déplacé la base de données d'un serveur à un autre. J'ai réussi à résoudre de cette façon.

J'espère que cela aide quelqu'un.

Thowzif
la source
0

Cette erreur, dans mon cas, concernait une configuration multi-magasins et multi-domaines. Magento tronque les codes des magasins. Si vous mappez des domaines pour stocker des codes, assurez-vous que le code de magasin correspond au routage spécifié dans index.php (ou partout où vous mappez). Dans la vérification de l'administrateur sous "Magasins" > " Tous les magasins ". Vérifiez votre site Web, magasin et magasin voir les codes de magasin.

Une fois que j'ai réalisé que Magento a tronqué le code de magasin que j'avais entré et fait le même ajustement dans la cartographie, tout a recommencé à fonctionner.

Taylor Hunt
la source