[magento 2] Exception #0 (LogicException): catalog_product index does not exist yet. Make sure everything is reindexed [risolto]

In Magento 2 l’errore Exception #0 (LogicException): catalog_product index does not exist yet. Make sure everything is reindexed si riferisce al fatto che il catalogo dei prodotti non è stato indicizzato. Questo problema si presenta frequentemente quando si usano altri motori per la gestione del catalogo, come ad esempio ElasticSearch (specialmente con il plugin di Smile-SA, ma non solo).

Per risolvere il problema lanciamo nuovamente l’indicizzazione del catalogo ed aggiorniamo il tutto, procedendo nel modo seguente da riga di commando.

ATTENZIONE: In teoria l’unico comando utile e necessario è il seguente:

Se dovessero sorgere problemi o non esserci risultati, procedere nella maniera descritta di seguito.

Se non lo abbiamo procuriamoci n98-magerun2.

Scarichiamolo nella cartella di installazione di Magento, poi rendiamolo eseguibile, eseguendo i seguenti comandi:

A questo punto eseguiamo la richiesta di reindicizzazione:

Eseguiamola anche sul fulltext:

Faccio notare che sto concedendo al PHP 5G di memoria per poter portare a termine, senza errori, il processo.

Qualora dovessero sorgere errori nel processo di indicizzazione, come per esempio Catalog Search index is locked by another reindex process. Skipping., procediamo nel modo seguente, altrimenti andiamo alla pulizia della cache.

Individuiamo i processi attivi con:

Reimpostiamo il processo che ci interessa con:

Nel dubbi possiamo reimpostarli tutti eseguendo i seguenti comandi:

A questo punto possiamo rilanciare il processo che ci interessa.

Puliamo tutta la cache:

La cache di Magento è una delle cose più problematiche, per cui conviene eseguire anche comandi superflui per ripetere l’operazione per sicurezza.

Detto questo riavviamo apache e il servizio di elastisearch, se lo abbiamo installato:

A questo punto dovrebbe essere tornato tutto normale.

Vedi articolo

[magento2] Script esterno per rimuovere le immagini duplicate su tutti i prodotti

Obiettivo: leggere tutti i prodotti del negozio su Magento 2 e eliminare tutte le immagini duplicate per ciascun prodotto.

In Magento 2 può capitare di ritrovarsi prodotti con immagini duplicate, specialmente a seguito di una importazione di dati. Inoltre sembra che ci siano anche dei bug, o almeno ci sono stati nelle diverse versioni, che producevano questo fastidioso problema.

Quello che vogliamo fare è creare una pagina correggi_immagini.php, nella root del sito, richiamando la quale percorreremo tutti i prodotti in cerca di immagini duplicate e le elimineremo.

Come piccolo accorgimento voglio che lo script sia eseguito solo a seguito di una specifica chiamata GET sulla pagina, per esempio /correggi_immagini.php?auth=1234567890abcdefghilmnopqrstuv

Al posto di 1234567890abcdefghilmnopqrstuv raccomando di sostituire un codice sufficientemente complesso.

Nei commenti ho inserito i dettagli sullo sviluppo dello script:

Vedi articolo