Meerdere rijen in de database voor dezelfde entiteit
Dit artikel biedt een oplossing voor het probleem waarbij er meerdere rijen voor dezelfde entiteitsidentiteitskaart in de database zijn.
Betrokken producten en versies:
- Adobe Commerce (alle versies)
Probleem
De database bevat meerdere rijen voor dezelfde entiteit-id.
Bijvoorbeeld, na het ontvangen van een lijst van verslagen met dubbele entiteit IDs wanneer u deze vraag in werking stelt:
SELECT * FROM $entityTable WHERE $column = <$entityID> ORDER BY created_in;
Waarbij $entityID = ID
van de pagina Categorie/product/winkelprijsegel/catalogusprijsregel/CMS.
Oorzaak
Dit is het verwachte gedrag. De meerdere rijen worden gemaakt door de functie voor het opslaan van inhoud:
-
Als u een begindatum zonder een einddatum opgeeft, zijn er minstens twee rijen met dezelfde entiteit-/regel-/pagina-id. Één rij zal op de originele staat van de entiteit (de rij wijzen waarin
created_in=1
), en één rij zal op het Eind van de Geplande Update wijzen. -
Als u een begindatum opgeeft met een einddatum, zijn er ten minste drie rijen met dezelfde entiteit-/regel-/pagina-id. Één rij zal op de originele staat van de entiteit (de rij waarin
created_in=1
) wijzen, zal één rij voor het Begin van de Geplande Update zijn, en één rij zal voor het Eind van de Geplande Update zijn.
In deze query ziet u bijvoorbeeld:
SELECT row_id, entity_id, created_in, updated_in FROM catalog_product_entity WHERE entity_id = 483 ORDER BY created_in;
- De waarden
created_in
enupdated_in
moeten dit patroon volgen: de waardecreated_in
van de huidige rij is gelijk aan de waardeupdated_in
in de vorige rij. Bovendien moet de eerste rijcreated_in = 1
bevatten en de laatste rijupdated_in = 2147483647
. (Als er slechts één rij is, moet ucreated_in=1
enupdated_in=2147483647
zien.)
Waarom wordt de tweede DB-vermelding (en alle volgende vermeldingen) in de DB voor dezelfde entiteit weergegeven?
- De tweede DB-record (en mogelijk de volgende record) voor de betrokken entiteit betekent dat er updates voor het opslaan van inhoud zijn gepland met de module
Magento_Staging
, die een extra record maakt voor een entiteit in de respectievelijke tabellen.
Er treedt alleen een probleem op als de records dezelfde waarden hebben voor de kolommen created_in
of updated_in
.
Oplossing
Dit is het verwachte gedrag en leidt alleen tot problemen als er verschillen tussen de rijen zijn.
Gerelateerde lezing
- de Veranderingen in categorieën worden niet bewaardin onze basis van de steunkennis
- Beste praktijken voor het wijzigen van gegevensbestandlijstenin het Playbook van de Implementatie van Commerce