Mehrere Zeilen in der Datenbank für dieselbe Entität

Dieser Artikel bietet eine Lösung für das Problem, bei dem es mehrere Zeilen für dieselbe Entitäts-ID in der Datenbank gibt.

Beschreibung description

Betroffene Produkte und Versionen

Adobe Commerce (alle Versionen)

Problem

Es gibt mehrere Zeilen für dieselbe Entitäts-ID in der Datenbank.

Wenn Sie z. B. beim Ausführen dieser Abfrage eine Liste von Datensätzen mit doppelten Entitäts-IDs erhalten:

SELECT * FROM $entityTable WHERE $column = <$entityID> ORDER BY created_in;

Wo $entityID = ID der Preisregel für Kategorie/Produkt/Warenkorb/Katalogpreisregel/CMS-Seite.

Entität
$entityTable
$column
Kategorie/Produkt
CATALOG_CATEGORY_ENTITY / CATALOG_PRODUCT_ENTITY
entity_id
Warenkorb-Preisregel / Katalog-Preisregel
salesrule/catalogRule
rule_id
CMS-Seite
cms_page
page_id

Ursache

Dies ist das erwartete Verhalten. Mehrere Zeilen werden von der Staging-Funktion für Inhalte erstellt.

Wenn Sie ein Startdatum ohne Enddatum angeben, gibt es mindestens zwei Zeilen mit derselben Entitäts-/Regel-/Seiten-ID. Eine Zeile zeigt den ursprünglichen Status der Entität an (die Zeile, in der created_in=1 ), und eine Zeile zeigt das *Ende der geplanten Aktualisierung* an.

Wenn Sie ein Startdatum mit einem Enddatum angeben, gibt es mindestens drei Zeilen mit derselben Entitäts-/Regel-/Seiten-ID. Eine Zeile zeigt den ursprünglichen Status der Entität an (die Zeile, in der created_in=1 ), eine Zeile steht für den *Start der geplanten Aktualisierung* und eine Zeile steht für das *Ende der geplanten Aktualisierung*.

In dieser Abfrage gilt beispielsweise Folgendes:

SELECT row_id, entity_id, created_in, updated_in FROM catalog_product_entity WHERE entity_id = 483 ORDER BY created_in;
row_id
entity_id
created_in
updated_in
2049
483
1
1540837826
483
483
1540837826
1540837842
2052
483
1540837826
2147483647
2051
483
1540837842
2147483647

Die created_in- und updated_in sollten diesem Muster folgen: Der created_in Wert der aktuellen Zeile ist gleich dem updated_in Wert in der vorherigen Zeile. Außerdem sollte die erste Zeile created_in = 1 und die letzte Zeile updated_in = 2147483647 enthalten. (Wenn es nur eine Zeile gibt, müssen created_in=1 und updated_in=2147483647 angezeigt werden.)

Warum wird der zweite DB-Eintrag (und alle nächsten) in der DB für dieselbe Entität angezeigt?

Der zweite DB-Eintrag (und möglicherweise die nächsten) für die betroffene Entität gibt an, dass Aktualisierungen des Content-Staging mit dem Modul Magento_Staging geplant wurden, wodurch ein zusätzlicher Datensatz für eine Entität in den entsprechenden Tabellen erstellt wird.

Ein Problem tritt nur auf, wenn die Datensätze dieselben Werte für die created_in oder updated_in Spalten aufweisen.

Auflösung resolution

Dies ist das erwartete Verhalten und führt nur zu Problemen, wenn es Diskrepanzen zwischen den Zeilen gibt.

Verwandtes Lesen

Änderungen an Kategorien werden nicht in ​ Support-Wissensdatenbank gespeichert

Best Practices zum Ändern von Datenbanktabellen im Commerce-Implementierungs-Playbook

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