Le modifiche nel database non si riflettono nella vetrina
Questo articolo fornisce soluzioni per evitare ritardi o interruzioni nell’applicazione degli aggiornamenti delle entità. Ciò include come evitare che le tabelle di registro delle modifiche vengano sovradimensionate e come impostare MySQL trigger di tabella.
Prodotti e versioni interessati:
- Adobe Commerce sull’infrastruttura cloud 2.2.x, 2.3.x
- Adobe Commerce on-premise 2.2.x, 2.3.x
Problema
Le modifiche apportate nel database non vengono applicate nella vetrina, oppure si verifica un ritardo significativo nell’applicazione degli aggiornamenti delle entità. Le entità che potrebbero essere interessate includono prodotti, categorie, prezzi, scorte, regole di catalogo, regole di vendita e regole target.
Causa
Se gli indicizzatori sono configurati per l'aggiornamento in base alla pianificazione, il problema potrebbe essere causato da una o più tabelle con log delle modifiche troppo grandi o da trigger MySQL non configurati.
Tabelle di log delle modifiche sovradimensionate
Le dimensioni delle tabelle del registro delle modifiche aumentano se il processo cron indexer_update_all_views
non viene completato più volte.
Le tabelle di log delle modifiche sono le tabelle di database in cui vengono tracciate le modifiche apportate alle entità. Un record viene archiviato in una tabella del registro delle modifiche finché la modifica non viene applicata, operazione eseguita dal processo cron indexer_update_all_views
. In un database Adobe Commerce sono presenti più tabelle di log delle modifiche denominate in base al seguente pattern: INDEXER_TABLE_NAME + '_cl', ad esempio catalog_category_product_cl
, catalog_product_category_cl
. Per ulteriori dettagli sul tracciamento delle modifiche nel database, consulta l'articolo Panoramica sull'indicizzazione > Mview nella documentazione per gli sviluppatori.
MySQL trigger del database non configurati
Si può sospettare che i trigger del database non siano configurati, se dopo l'aggiunta o la modifica di un'entità (prodotto, categoria, regola di destinazione e così via) - non vengono aggiunti record alla tabella del log delle modifiche corrispondente.
Soluzione
Evitare che le tabelle del registro delle modifiche vengano sovradimensionate
Verificare che il processo cron indexer_update_all_views
sia sempre completato correttamente.
È possibile utilizzare la query SQL seguente per ottenere tutte le istanze non riuscite del processo cron indexer_update_all_views
:
select * from cron_schedule where job_code = "indexer_update_all_views" and status
<> "success" and status <> "pending";
Oppure puoi controllarne lo stato nei registri cercando le indexer_update_all_views
voci:
<install_directory>/var/log/cron.log
- per le versioni 2.3.1+ e 2.2.8+<install_directory>/var/log/system.log
- per versioni precedenti
Reimposta MySQL trigger tabella
Per impostare i trigger di tabella mancanti MySQL, è necessario reimpostare la modalità dell'indicizzatore:
- Passa a "Al salvataggio".
- Torna a "In programma".
Utilizzare il comando seguente per eseguire questa operazione.
php bin/magento indexer:set-mode {realtime|schedule} [indexerName]
Lettura correlata
- MySQL le tabelle sono troppo grandi nella Knowledge Base di supporto
- Indicizzazione: Mview nella documentazione per gli sviluppatori
- Best practice per la modifica delle tabelle del database nel playbook di implementazione di Commerce