Wijzigingen in categorieën worden niet opgeslagen
Dit artikel bevat een oplossing voor het bijwerken van productcategorieën via Commerce Admin. De wijzigingen worden niet weergegeven op de beheerdersinterface en de winkel. Het probleem wordt veroorzaakt door de beschadigde gegevens in de tabel catalog_category_entity
. U lost het probleem op door de updaterecords voor problematische categorieën in de tabel te corrigeren of te verwijderen. Daarna kunt u de productcategorieën bijwerken met de Admin.
Probleem
Nadat u wijzigingen hebt aangebracht in een productcategorie in Beheer en deze hebt opgeslagen, worden de nieuwe updates niet opgeslagen en niet weergegeven in de beheerdersruimte en de opslagruimte.
Stappen om te reproduceren
- Ga naar Catalogus > Categorieën.
- Selecteer een categorie.
- Breng veranderingen aan, dan klik sparen.
- Het bericht wordt getoond: u bewaarde de categorie.
- De wijziging die u hebt aangebracht, is niet opgeslagen.
Mogelijke oorzaak: beschadigde gegevens in de tabel catalog_category_entity
Het probleem wordt veroorzaakt door dezelfde waarden in de kolom created_in
van de categorierecords in de database (DB) die hierdoor worden beïnvloed.
Details:
- De
catalog_category_entity
DB-tabel heeft twee of meer records voor de desbetreffende categorie (deze records hebben dezelfdeentity_id
-waarde). - Deze categorierecords hebben de zelfde waarden in de
created_in
kolom.
Hoe verschijnt de tweede ingang van DB (en alle volgende) in OB voor één en de zelfde categorie?
De tweede DB-record (en mogelijk de volgende record) voor de desbetreffende categorie betekent dat er categorietoewijzingen zijn gepland met de module Magento_Staging. De module maakt een extra record voor een categorie in de catalog_category_entity
. Dit is het verwachte gedrag van de toepassing. Het probleem is dat de records dezelfde waarden hebben voor de kolom created_in
.
Hoe worden dezelfde waarden weergegeven?
We kunnen de redenen voor gegevenscorruptie niet met zekerheid noemen. De mogelijke redenen kunnen zijn:
- aanpassingen (code, thema's, enz.)
- onjuiste gegevensmigratie
- onjuiste gegevensherstel van back-up
Voor zover wij weten is dergelijke gegevensbeschadiging niet typisch voor het "schone" (out-of-the-box) Adobe Commerce-exemplaar en kan deze niet worden gereproduceerd op een Adobe Commerce-installatie zonder aanpassingen.
Hoe dit te verifiëren is uw probleem
De catalog_category_entity
-tabel moet meerdere records voor de desbetreffende categorie bevatten (records moeten dezelfde entity_id
-waarde hebben) en ten minste twee van deze records moeten dezelfde created_in
-waarden hebben. Met dit, zouden de het Staging-Geplande updates niet in Commerce Admin worden getoond; u zou slechts het lege Geplande blok van Veranderingen zien.
Stappen om te verifiëren
- Open de tabel met catalogi_category_entity in uw database.
- Entiteiten filteren op entiteit_id, met entiteit_id die de desbetreffende categorie identificeert.
- Als de waarden in de kolom created_in gelijk zijn voor verschillende items met dezelfde entiteit_id, is dat onze zaak. Normaal gesproken zijn de
created_in
-waarden verschillend voor elke record.
Oplossing
U kunt een van de volgende oplossingen kiezen:
- Schrap de problematische verslagen van de categoriesupdate
- Repareer de problematische verslagen van de categorieupdate
De updaterecords voor problematische categorieën verwijderen
In deze oplossing moet u de juiste updated_in
waarde instellen voor de eerste categorierecord en alle andere records voor deze categorie verwijderen. Hiermee worden alle geplande rubriekupdates verwijderd.
Voer de volgende stappen uit:
- Zoek de DB-records met de
entity_id
van de desbetreffende categorie. - Selecteer de record met het grootste gehele getal in de kolom
updated_in
. - Kopieer de
updated_in
-waarde uit de geselecteerde record. - Selecteer de record met
row_id
=entity_id
(eerste categorierecord) en plak de gekopieerde waarde in de kolomupdated_in
van deze record. - Rijen verwijderen waarvoor
row_id
niet gelijk is aanentity_id
.
De problematische update-records voor categorieën repareren
- Zoek de categorierecords met dezelfde
entity_id
en dezelfdecreated_in
-waarde. - Selecteer de record waar
row_id
=entity_id
en kopieer deupdated_in
-waarde. - Selecteer de record waarin
row_id
niet gelijk is aanentity_id
en plak de gekopieerdeupdated_in
waarde als decreated_in
waarde. Zie de onderstaande schermafbeelding als illustratie. - Controleer of de update-record voor de categorie, waarvan u de
created_in
-waarde hebt bijgewerkt (in stap 3), bestaat in destaging_update
-tabel. bijvoorbeeld: ALS de gekopieerdecreated_in
waarde 1509281953 is, DAN moet de entiteit metrow_id
= 1509281953 in destaging_update
lijst bestaan.
Gerelateerde lezing
Beste praktijken voor het wijzigen van gegevensbestandlijstenin het Playbook van de Implementatie van Commerce