Wijzigingen in de database worden niet weerspiegeld in de winkel
Dit artikel biedt oplossingen om vertragingen of onderbrekingen in de updates van entiteiten te voorkomen. Dit omvat hoe te vermijden veranderingslogboeklijsten van het worden overmaats en hoe te opstelling MySQL lijsttrekkers.
Betrokken producten en versies:
- Adobe Commerce op cloud-infrastructuur 2.2.x, 2.3.x
- Adobe Commerce op locatie 2.2.x, 2.3.x
Probleem
Wijzigingen die u aanbrengt in de database, worden niet doorgevoerd in de winkel of er is een aanzienlijke vertraging bij de toepassing van entiteitsupdates. Tot de entiteiten die kunnen worden beïnvloed behoren producten, categorieën, prijzen, voorraden, catalogusregels, verkoopregels en doelregels.
Oorzaak
Als uw indexeerders worden gevormd om door programmabij te werken, zou de kwestie door één of meerdere lijsten met veranderingslogboeken kunnen worden veroorzaakt die te groot zijn of trekkers MySQL die niet opstelling zijn.
Te grote logtabellen voor wijzigingen
De logtabellen voor wijzigingen worden zo groot als de indexer_update_all_views
-uitsnijdtaak niet meerdere keren is voltooid.
Logtabellen wijzigen zijn de databasetabellen waarin de wijzigingen in entiteiten worden bijgehouden. Een record wordt opgeslagen in een tabel met het wijzigingslogboek, zolang de wijziging niet wordt toegepast. Deze wijziging wordt uitgevoerd door de indexer_update_all_views
-snijtaak. Een Adobe Commerce-database bevat meerdere veranderingslogtabellen. Deze krijgen een naam volgens het volgende patroon: INDEXER_TABLE_NAME + '_cl', bijvoorbeeld catalog_category_product_cl
, catalog_product_category_cl
. U kunt meer details op vinden hoe de veranderingen in gegevensbestand in het Indexeren overzicht > artikel van de Mviewin onze ontwikkelaarsdocumentatie worden gevolgd.
MySQL database-triggers niet ingesteld
U zou vermoeden dat database-triggers niet worden ingesteld, als na het toevoegen of wijzigen van een entiteit (product, categorie, doelregel, enzovoort) geen records worden toegevoegd aan de overeenkomstige tabel in het wijzigingslogboek.
Oplossing
Vermijd te grote wijzigingen in logtabellen
Zorg ervoor dat de indexer_update_all_views
-snijtaak altijd met succes is voltooid.
U kunt de volgende SQL-query gebruiken om alle mislukte instanties van de indexer_update_all_views
cron-taak op te halen:
select * from cron_schedule where job_code = "indexer_update_all_views" and status
<> "success" and status <> "pending";
U kunt ook de status van het bestand in de logboeken controleren door naar de indexer_update_all_views
-items te zoeken:
<install_directory>/var/log/cron.log
- voor versies 2.3.1+ en 2.2.8+<install_directory>/var/log/system.log
- voor eerdere versies
MySQL tabeltriggers opnieuw instellen
Als u de ontbrekende MySQL tabeltriggers wilt instellen, moet u de indexeermodus opnieuw instellen:
- Schakel over naar 'Bij opslaan'.
- Schakel terug naar 'Op schema'.
Gebruik de volgende opdracht om deze bewerking uit te voeren.
php bin/magento indexer:set-mode {realtime|schedule} [indexerName]
Gerelateerde lezing
- MySQL de lijsten zijn te grootin onze basis van de steunkennis
- Indexeren: Mviewin onze ontwikkelaarsdocumentatie
- Beste praktijken voor het wijzigen van gegevensbestandlijstenin het Playbook van de Implementatie van Commerce