Änderungen an Kategorien werden nicht gespeichert
Dieser Artikel bietet eine Fehlerbehebung für den Fall, dass beim Aktualisieren von Produktkategorien über den Commerce-Admin die Änderungen nicht in der Admin- und Storefront angezeigt werden. Das Problem wird durch die beschädigten Daten in der catalog_category_entity
verursacht. Um das Problem zu beheben, beheben oder entfernen Sie die problematischen Datensätze für die Kategorieaktualisierung in der Tabelle. Danach sollten Sie in der Lage sein, Produktkategorien mithilfe des Administrators zu aktualisieren.
Problem
Nachdem Sie Änderungen an einer Produktkategorie im Admin- und Speicherbereich vorgenommen haben, werden die neuen Aktualisierungen weder gespeichert noch in der Admin- und Storefront angezeigt.
Schritte zur Reproduktion
- Navigieren Sie Katalog > Kategorien.
- Kategorie auswählen.
- Nehmen Sie Änderungen vor und klicken Sie dann auf Speichern.
- Die Meldung wird angezeigt: Sie haben die Kategorie gespeichert.
- Beachten Sie, dass die von Ihnen vorgenommene Änderung nicht gespeichert wurde.
Mögliche Ursache: Beschädigte Daten in der catalog_category_entity
Das Problem wird durch dieselben Werte in der Spalte created_in
der betroffenen Kategoriedatensätze in der Datenbank verursacht (DB).
Details:
- Die
catalog_category_entity
DB-Tabelle enthält zwei oder mehr Datensätze für die betroffene Kategorie (diese Datensätze haben denselbenentity_id
). - Diese Kategoriedatensätze haben dieselben Werte in der
created_in
Spalte.
Wie wird der zweite DB-Eintrag (und alle nächsten) in der DB für ein und dieselbe Kategorie angezeigt?
Der zweite DB-Eintrag (und möglicherweise die nächsten) für die betroffene Kategorie bedeutet, dass Kategorienaktualisierungen mit dem Magento_Staging-Modul geplant wurden. Das Modul erstellt einen zusätzlichen Datensatz für eine Kategorie im catalog_category_entity
. Dies ist das erwartete Anwendungsverhalten. Das Problem besteht darin, dass die Datensätze dieselben Werte für die created_in
Spalte aufweisen.
Wie werden dieselben Werte angezeigt?
Wir können die Gründe für die Datenbeschädigung nicht mit Sicherheit angeben. Mögliche Gründe können sein:
- Anpassungen (Code, Designs usw.)
- Falsche Datenmigration
- Falsche Datenwiederherstellung aus der Sicherung
Nach unserem Kenntnisstand ist eine solche Datenbeschädigung nicht typisch für die „bereinigte“ (vordefinierte) Adobe Commerce-Instanz und kann nicht ohne Anpassungen auf einer Adobe Commerce-Installation reproduziert werden.
Überprüfen, ob dies Ihr Problem ist
Die catalog_category_entity
Tabelle sollte mehrere Datensätze für die betroffene Kategorie enthalten (Datensätze sollten denselben entity_id
haben) und mindestens zwei dieser Datensätze sollten dieselben created_in
Werte haben. Bei diesem Vorgang werden die geplanten Aktualisierungen des Staging nicht im Commerce Admin angezeigt, sondern es wird nur der leere Block Geplante Änderungen angezeigt.
Zu überprüfende Schritte
- Zugreifen auf die Tabelle catalog_category_entity in Ihrer Datenbank
- Entitäten nach entity_id filtern, wobei entity_id die betroffene Kategorie identifiziert.
- Wenn die Werte in der Spalte Erstellt_in für verschiedene Einträge mit derselben entity_id gleich sind, ist dies der Fall. Normalerweise sind die
created_in
für jeden Datensatz unterschiedlich.
Lösung
Sie können eine der folgenden Lösungen wählen:
- Löschen der Datensätze zur Aktualisierung der problematischen Kategorien
- Reparieren der Datensätze für die Aktualisierung der problematischen Kategorien
Löschen der Einträge zur Aktualisierung der problematischen Kategorien
In dieser Lösung müssen Sie den richtigen updated_in
für den ursprünglichen Kategoriedatensatz festlegen und alle anderen Datensätze für diese Kategorie löschen. Dadurch werden alle geplanten Kategorieaktualisierungen entfernt.
Führen Sie die folgenden Schritte aus:
- Suchen Sie die DB-Datensätze mit dem
entity_id
der betroffenen Kategorie. - Wählen Sie den Datensatz mit der größten Ganzzahl in der Spalte
updated_in
aus. - Kopieren Sie den
updated_in
aus dem ausgewählten Datensatz. - Wählen Sie den Datensatz mit
row_id
=entity_id
aus (erster Kategoriedatensatz) und fügen Sie den kopierten Wert in dieupdated_in
Spalte dieses Datensatzes ein. - Zeile(n) mit
row_id
ungleichentity_id
löschen.
Reparieren der Einträge für die Aktualisierung problematischer Kategorien
- Suchen Sie die Kategoriedatensätze mit demselben
entity_id
und demselbencreated_in
. - Wählen Sie den Datensatz aus, bei dem
row_id
=entity_id
, und kopieren Sie denupdated_in
. - Wählen Sie den Datensatz aus, bei dem
row_id
nicht gleichentity_id
ist, und fügen Sie den kopiertenupdated_in
alscreated_in
ein. Siehe den Screenshot unten als Illustration. - Überprüfen Sie, ob der Kategorie-Update-Datensatz, dessen
created_in
Sie aktualisiert haben (in Schritt 3), in derstaging_update
vorhanden ist. Beispiel: WENN der kopiertecreated_in
-Wert 1509281953 ist, MUSS die Entität mitrow_id
= 1509281953 in derstaging_update
-Tabelle vorhanden sein.
Verwandtes Lesen
Best Practices zum Ändern von Datenbanktabellen im Commerce-Implementierungs-Playbook