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 om veranderingslogboeklijsten te vermijden van het worden overmaats en hoe te opstelling MySQL lijsttrekkers.

Beschrijving description

Omgevingen

  • 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 programma ​ bij 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. Er zijn meerdere veranderingslogboeklijsten in een gegevensbestand van Adobe Commerce, zij worden genoemd volgens het volgende patroon: INDEXER_TABLE_NAME + "_cl", bijvoorbeeld catalog_category_product_cl, catalog_product_category_cl. U kunt meer details vinden over hoe de veranderingen in gegevensbestand in het Indexerende ​ overzicht > Mview ​ artikel in onze ontwikkelaarsdocumentatie worden gevolgd.

MySQL database triggers not set

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.

Resolutie resolution

Waarschuwing : Wij adviseren sterk het creëren van een gegevensbestandsteun alvorens om het even welke manipulaties uit te voeren en hen tijdens de hoge periodes van de plaatslading te vermijden.

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:

  1. Schakel over naar "Bij opslaan".
  2. Ga terug naar "On Schedule".

Gebruik de volgende opdracht om deze bewerking uit te voeren.

Waarschuwing: alvorens de wijzen van de omschakelingsindexeerder, adviseren wij het zetten van uw website in ​ onderhoud ​ wijze en ​ maak kanonbanen ​ onbruikbaar om gegevensbestandsloten te vermijden.

php bin/magento indexer:set-mode {realtime|schedule} [ indexerName]

Info: de indexeerders-verwante gegevensbestandtrekkers worden toegevoegd wanneer de indexeerwijze aan programma wordt geplaatst en wordt verwijderd wanneer de indexeerwijze aan realtime wordt geplaatst. Als de triggers ontbreken in uw database terwijl de indexen zijn ingesteld op programmeren, wijzigt u de indexen in realtime en wijzigt u ze weer in schema. Hierdoor worden de triggers opnieuw ingesteld.

Gerelateerde lezing

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f