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 i trigger di tabella MySQL.
Descrizione description
Ambienti
- 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 cenni preliminari su > Mview nella documentazione per gli sviluppatori.
I trigger del database MySQL non sono 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.
Risoluzione resolution
Avviso: si consiglia di creare un backup del database prima di eseguire eventuali manipolazioni ed evitarle durante i periodi di caricamento elevato del sito.
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 trigger tabella MySQL
Per impostare i trigger della tabella MySQL mancanti, è necessario reimpostare la modalità di indicizzazione:
- Passa a "Al salvataggio".
- Torna a "On Schedule" (Pianificazione).
Utilizzare il comando seguente per eseguire questa operazione.
Avviso: Prima di passare a una modalità di indicizzazione, è consigliabile attivare la modalità manutenzione del sito Web e disabilitare i processi cron per evitare blocchi del database.
php bin/magento indexer:set-mode {realtime|schedule} [ indexerName]
Informazioni: I trigger del database relativi agli indicizzatori vengono aggiunti quando la modalità indicizzatore è impostata su Pianifica e rimossi quando la modalità indicizzatore è impostata su In tempo reale. Se i trigger non sono presenti nel database mentre gli indicizzatori sono impostati per la pianificazione, modificare gli indicizzatori in tempo reale e quindi riportarli alla pianificazione. In questo modo vengono ripristinati i trigger.
Lettura correlata
- Le tabelle MySQL 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
- Risoluzione rapida dei problemi
- Impossibile salvare le modifiche alle categorie
- AC-15223: la pagina Storefront mostra i contenuti memorizzati nella cache dopo il passaggio da un archivio all'altro
- Personalizza configurazione cache