Änderungen an Kategorien werden nicht gespeichert
Dieser Artikel enthält eine Fehlerbehebung für die Aktualisierung von Produktkategorien über den Commerce-Administrator. Die Änderungen werden nicht in der Admin- und Storefront angezeigt. Das Problem wird durch die beschädigten Daten in der Tabelle catalog_category_entity
verursacht. Um das Problem zu beheben, beheben oder entfernen Sie die problematischen Kategorieaktualisierungsdatensätze in der Tabelle. Danach sollten Sie Produktkategorien mit dem Admin aktualisieren können.
Problem
Nachdem Sie in Admin Änderungen an einer Produktkategorie vorgenommen und gespeichert haben, werden die neuen Aktualisierungen weder in Admin noch im Storefront gespeichert und angezeigt.
Zu reproduzierende Schritte
- Navigieren Sie zu Katalog > Kategorien.
- Wählen Sie eine Kategorie aus.
- Nehmen Sie Änderungen vor und klicken Sie dann auf Speichern.
- Die Nachricht 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 Tabelle catalog_category_entity
Das Problem wird durch dieselben Werte in der Spalte created_in
der betroffenen Kategorieeinträge in der Datenbank (DB) verursacht.
Details:
- Die DB-Tabelle
catalog_category_entity
enthält zwei oder mehr Datensätze für die betroffene Kategorie (diese Datensätze haben denselbenentity_id
-Wert). - Diese Kategorieeinträge haben die gleichen Werte in der Spalte
created_in
.
Wie wird der zweite DB-Eintrag (und alle nächsten) in DB für eine und dieselbe Kategorie angezeigt?
Der zweite DB-Datensatz (und möglicherweise der nächste) für die betroffene Kategorie bedeutet, dass Kategorieaktualisierungen mit dem Magento_Staging-Modul geplant wurden. Das Modul führt einen zusätzlichen Datensatz für eine Kategorie in der catalog_category_entity
aus. Dies ist das erwartete Anwendungsverhalten. Das Problem besteht darin, dass die Datensätze dieselben Werte für die Spalte created_in
aufweisen.
Wie werden dieselben Werte angezeigt?
Wir können die Ursachen für Datenbeschädigungen nicht mit Sicherheit nennen. Mögliche Gründe sind:
- Anpassungen (Code, Designs usw.)
- falsche Datenmigration
- falsche Datenwiederherstellung aus der Sicherung
Nach unserem besten Wissen ist eine solche Datenbeschädigung nicht typisch für die "saubere"(vordefinierte) Adobe Commerce-Instanz und kann nicht bei einer Adobe Commerce-Installation ohne Anpassungen reproduziert werden.
Überprüfen, ob dies Ihr Problem ist
Die Tabelle catalog_category_entity
sollte mehrere Datensätze für die betroffene Kategorie enthalten (Datensätze sollten denselben entity_id
-Wert aufweisen) und mindestens zwei dieser Datensätze sollten über dieselben created_in
-Werte verfügen. Danach werden die geplanten Staging-Aktualisierungen nicht im Commerce-Administrator angezeigt. Sie sehen nur den leeren Baustein Geplante Änderungen .
Zu überprüfende Schritte
- Rufen Sie die Tabelle catalog_category_entity in Ihrer Datenbank auf.
- Entitäten nach entity_id filtern, wobei entity_id die betroffene Kategorie angibt.
- Wenn die Werte in der Spalte created_in für verschiedene Einträge mit derselben entity_id identisch sind, ist dies unser Fall. Normalerweise unterscheiden sich die
created_in
-Werte für jeden Datensatz.
Lösung
Sie können eine der folgenden Lösungen wählen:
- Löschen der Datensätze zur Aktualisierung problematischer Kategorien
- Reparieren der problematischen Kategorieaktualisierungsdatensätze
Löschen Sie die problematischen Aktualisierungsdatensätze der Kategorie
In dieser Lösung müssen Sie den richtigen updated_in
-Wert für den anfä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 Wert
entity_id
der betroffenen Kategorie. - Wählen Sie den Datensatz mit der größten Ganzzahl in der Spalte
updated_in
aus. - Kopieren Sie den Wert
updated_in
aus dem ausgewählten Datensatz. - Wählen Sie den Datensatz mit
row_id
=entity_id
(erster Kategorieeintrag) aus und fügen Sie den kopierten Wert in die Spalteupdated_in
dieses Datensatzes ein. - Löschen Sie Zeilen mit
row_id
nicht gleichentity_id
.
Beheben Sie die problematischen Aktualisierungsdatensätze der Kategorie
- Suchen Sie die Kategorieeinträge mit demselben
entity_id
und demselbencreated_in
-Wert. - Wählen Sie den Datensatz mit
row_id
=entity_id
aus und kopieren Sie den Wertupdated_in
. - Wählen Sie den Datensatz aus, bei dem
row_id
nicht gleichentity_id
ist, und fügen Sie den kopiertenupdated_in
-Wert alscreated_in
-Wert ein. Siehe Screenshot unten als Abbildung. - Vergewissern Sie sich, dass der Kategorieaktualisierungsdatensatz, dessen
created_in
-Wert Sie aktualisiert haben (in Schritt 3), in der Tabellestaging_update
vorhanden ist. Beispiel: WENN der kopiertecreated_in
-Wert 1509281953 ist, muss die Entität mitrow_id
= 1509281953 in der Tabellestaging_update
vorhanden sein.