Ändringar av kategorier sparas inte
I den här artikeln finns en fix som du kan använda när du uppdaterar produktkategorier via Commerce Admin. Ändringarna visas inte i Admin och Store. Problemet orsakas av skadade data i tabellen catalog_category_entity
. Åtgärda eller ta bort de problematiska kategoriuppdateringsposterna i tabellen för att lösa problemet. Efter det bör du kunna uppdatera produktkategorier med hjälp av Admin.
Problem
När du har gjort ändringar i en produktkategori i Admin och sparat kommer de nya uppdateringarna varken att sparas eller visas i Admin och Store.
Steg som ska återskapas
- Gå till Katalog > Kategorier.
- Välj en kategori.
- Gör ändringarna och klicka sedan på Spara.
- Meddelandet visas: Du har sparat kategorin.
- Observera att den ändring du har gjort inte har sparats.
Möjlig orsak: skadade data i tabellen catalog_category_entity
Problemet orsakas av samma värden i kolumnen created_in
för de berörda kategoriposterna i databasen (DB).
Information:
- Databastabellen
catalog_category_entity
har två eller flera poster för den berörda kategorin (dessa poster har sammaentity_id
-värde). - Dessa kategoriposter har samma värden i
created_in
-kolumnen.
Hur visas den andra DB-posten (och alla de efterföljande) i DB för en och samma kategori?
Den andra DB-posten (och eventuellt de nästa) för den berörda kategorin innebär att det har planerats kategoriuppdateringar med modulen Magento_Staging. Modulen skapar ytterligare en post för en kategori i catalog_category_entity
och det är det förväntade programbeteendet. Problemet är att posterna har samma värden för kolumnen created_in
.
Hur visas samma värden?
Vi kan inte med säkerhet ange orsakerna till korrupta data. Möjliga orsaker kan vara:
- anpassningar (kod, teman osv.)
- felaktig datamigrering
- felaktig dataåterställning från säkerhetskopia
Så vitt vi vet är sådana datafel inte typiska för den"rena" (körklara) Adobe Commerce-instansen och kan inte reproduceras i en Adobe Commerce-installation utan anpassningar.
Hur du verifierar att detta är ditt problem
Tabellen catalog_category_entity
ska ha flera poster för den berörda kategorin (poster ska ha samma entity_id
-värde) och minst två av posterna ska ha samma created_in
-värden. I och med detta visas inte de mellanliggande schemalagda uppdateringarna i Commerce Admin. Du ser bara det tomma blocket för schemalagda ändringar.
Steg som ska verifieras
- Öppna tabellen catalog_category_entity i databasen.
- Filtrera entiteter efter entitet_id, med entiteten_id som identifierar den berörda kategorin.
- Om värdena i den skapade kolumnen är desamma för olika poster med samma enhet_id är det vårt fall. Normalt är värdena
created_in
olika för alla poster.
Lösning
Du kan välja någon av följande lösningar:
- Ta bort den problematiska kategoriuppdateringsposten
- Reparera den problematiska kategoriuppdateringsposterna
Ta bort poster för problematisk kategoriuppdatering
I den här lösningen måste du ange rätt updated_in
-värde för den inledande kategoriposten och ta bort alla andra poster för den här kategorin. Detta tar bort alla schemalagda kategoriuppdateringar.
Följ de här stegen:
- Hitta DB-posterna med
entity_id
för den berörda kategorin. - Markera posten med det största heltalet i kolumnen
updated_in
. - Kopiera värdet
updated_in
från den markerade posten. - Markera posten med
row_id
=entity_id
(ursprunglig kategoripost) och klistra in det kopierade värdet i kolumnenupdated_in
för den här posten. - Ta bort rader med
row_id
som inte är lika medentity_id
.
Reparera de problematiska posterna för kategoriuppdatering
- Hitta kategoriposterna med samma
entity_id
och sammacreated_in
-värde. - Markera posten där
row_id
=entity_id
och kopiera värdetupdated_in
. - Markera posten där
row_id
inte är lika medentity_id
och klistra in det kopieradeupdated_in
-värdet somcreated_in
-värde. Se skärmbilden nedan som en illustration. - Kontrollera att kategoriuppdateringsposten, vars
created_in
-värde du har uppdaterat (i steg 3), finns i tabellenstaging_update
. Om det kopieradecreated_in
-värdet till exempel är 1509281953 måste entiteten medrow_id
= 1509281953 finnas i tabellenstaging_update
.
Relaterad läsning
Metodtips för att ändra databastabeller i Commerce Implementeringspellbook