DocumentatieCommerceCommerce KB

Alleen PaaS

Meerdere rijen in de database voor dezelfde entiteit

Laatst bijgewerkt: 5 mei 2025
  • Onderwerpen:
  • Catalogusbeheer
  • Categorieën

Gemaakt voor:

  • Ontwikkelaar

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.

Entiteit$entityTable$column
Categorie/Productcatalog_category_entiteit/catalog_product_entiteitentity_id
Prijsregel winkelwagentje/regel catalogusprijswinkelregel/catalogusregelrule_id
CMS-paginacms_pagepage_id

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;

multiple_rows_in_database.png

  • De waarden created_in en updated_in moeten dit patroon volgen: de waarde created_in van de huidige rij is gelijk aan de waarde updated_in in de vorige rij. Bovendien moet de eerste rij created_in = 1 bevatten en de laatste rij updated_in = 2147483647 . (Als er slechts één rij is, moet u created_in=1 en updated_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
recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a