Magento 2 reindex non restituisce tale entità


14

Ho migrato con successo il catalogo da Magento 1.9.2.3 a Magento 2.0.2. Dopo la migrazione, ho reindicizzato usando il comando php bin/magento indexer:reindex.

Tutto viene reindicizzato correttamente, tranne gli indici catalog_category_producte catalog_product_category, restituito No such entity.in shell e notifica Reindex Requiredin admin. Ho controllato var/log/ma nessun errore.

Di conseguenza, i prodotti vengono aggiunti alle categorie nel back-end ma le categorie vengono visualizzate vuote nel front-end.

Cosa potrebbe causare questo problema? Come posso eseguire il debug?


Risposte:


7

Oltre a Raffaello:

Ho eseguito il debug di questo codice con l'alterazione del costruttore dell'eccezione a scopo di debug (tramite xdebug o vecchi dump). Modifica il costrutto dell'eccezione per ora (il file è \lib\internal\Magento\Framework\Exception\NoSuchEntityException.php)

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

Dopodiché vai su uno stack e controlla gli argomenti forniti (gli arg sono disponibili anche nel backtrace di debug, ma il dumping degli oggetti magento non è realmente adatto al browser).

Sono arrivato alla conclusione che era nel punto in storeGroupRepositorycui non è stato possibile trovare l'ID del gruppo. Immerso nelle tabelle del negozio e ho visto alcune righe nella tabella del negozio che si riferivano a una store_groupnon presente nella store_grouptabella (il gruppo di negozi non esiste nella tabella pertinente).

Rimosse le righe del negozio difettose e l'errore è sparito da allora.

Ma tieni presente che può anche essere in una tabella diversa / altra ragione. ad esempio sito Web, negozio stesso o gruppo di negozi in questo caso. Quindi è sempre una piccola ricerca che devi eseguire da solo.

Ho anche scoperto che c'erano molti riferimenti a questi negozi e li ho rimossi manualmente nel db. Questo può essere un lavoro noioso ma risolverà il problema.

E non dimenticare di rimuovere i tuoi hack.


perché non usi xdebug invece?
Luca,

@TimVroom Ho anche lo stesso errore. Aiutatemi magento.stackexchange.com/q/236187/24878
akgola,

11

Non sono sicuro che sia troppo tardi per aggiungere, ma quando ho avuto questo sembrava essere stato causato da alcuni ID entità che dovevano essere impostati su 0.

Questo script ha funzionato per me:

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;

Spero che sia d'aiuto.


questo mi ha aiutato molto, grazie per averlo condiviso!
favo

Questo ha funzionato anche per me :)
Owen il

3

Ok, quindi viene il No such entity.messaggio di errore \lib\internal\Magento\Framework\Exception\NoSuchEntityException.php.

Questa classe è una classe di eccezioni personalizzata di Magento ed è molto usata in Magento 2.

Ogni volta che vedi codice come:

catch (NoSuchEntityException $e)

O

throw NoSuchEntityException;

Questa classe è in uso.

Il problema nel tuo caso è che è difficile scoprire da dove viene generata quell'eccezione.

Quindi, per restringerlo un po ', puoi iniziare il debug delle due classi correlate ai tuoi indici che falliscono:

  • Magento\Catalog\Model\Indexer\Category\Product=> indice catalogo_categoria_prodotto
  • Magento\Catalog\Model\Indexer\Product\Category=> indice catalog_product_category

Fortunatamente, il secondo estende il primo in modo da avere un punto di partenza.

Devi tenere presente che ciascuna di questa classe di indicizzatore utilizza le classi di righe di azioni per elaborare la reindicizzazione:

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

Per me è qui che dovresti iniziare il debug poiché quelle classi di righe di azioni sono le classi dirette che stanno reindicizzando quei due indici.

Spero davvero che ti possa aiutare a trovare il tuo problema.


Ciao @Raphael, ho un problema simile per la creazione del cliente dopo la migrazione. Aiutatemi magento.stackexchange.com/q/236187/24878
akgola il

0

Questo ha funzionato per me dopo aver provato tutto.

Supponendo che il tuo sito sia attivo Developer Mode, puoi cambiarlo in Production Modee cancellare / svuotare la cache e poi tornare a Developer Mode.

Ho riscontrato questo problema nel front-end, poiché recentemente ho spostato il database da un server a un altro. Sono riuscito a risolvere in questo modo.

SPERANZA CHE AIUTA ALCUNI.



0

Questo errore, nel mio caso, era per una configurazione multi-store e multi-dominio. Magento tronca i codici negozio. Se stai mappando domini su codici negozio, assicurati che il codice negozio corrisponda al routing specificato in index.php (o ovunque tu mappi). Nell'amministratore, seleziona "Negozi" > " Tutti i negozi ". Controlla il tuo sito web, negozio e negozio visualizzare i codici negozio.

Una volta capito che Magento aveva troncato il codice negozio che avevo inserito e fatto la stessa regolazione nella mappatura e tutto ha ripreso a funzionare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.