Beruflich betreibe ich/wir u.a. einen Shopware-Online Shop (aktuell Version 5.4.0). Seit einiger Zeit beobachte ich, wie in der Datenbank Datensatzleichen entstehen, die ich nicht reproduzieren kann.
Hintergrundwissen: wir benutzen das Shopware-Backend nicht zum Erstellen oder Bearbeiten von Artikeln/Kategorien etc. sondern setzen zu diesem Zweck ein von mit entwickeltes PIM ein. Dieses System „füttert“ dann den Shopware über die API. D.h. Änderungen an den Artikel-Stammdaten, -Verfügbarkeiten und Kategorien werden aus dem PIM bei Änderungen direkt mittels REST-API in den Shopware-Shop geschrieben.
Nun kommt es selten (aber leider zu häufg) zu folgenden Inkonsistenzen in der Datenstruktur der Shopwaredatenbank:
Beim Update eines Varianten-Artikels passiert es, dass der Datensatz in der s_articles_details des „main_details“ gelöscht wird (kind=2). D.h. der Datensatz des Artikels in s_articles verweist im Feld main_detail_id auf eine ID, die nicht mehr in der s_articles_details existiert. Das hat zur Folge, dass der Artikel im Frontend nicht mehr aktiv ist. Im Backend sorgt es dafür, dass man diesen Artikel auch nicht mehr über die Artikel-Verwaltung finden kann – die Varianten aber sehr wohl.
Sollte man nun versuchen, diesen Artikel über die API zu löschen, werden sämtliche Einträge aus der s_articles_detaills gelöscht die in articleID auf die ID verweisen. Allerdings wird der Eintrag in der Tabelle s_articles nicht gelöscht! Außerdem werden dann auch nicht andere Verweise auf diesen gelöscht. Unter anderem die Zuordnung des Artikels zu Kategorien s_articles_categories oder zu den Produkt-Bildern s_articles_img
Es entstehen also viele viele Datensatz-Leichen.
Ich werde heute Nachmittag mal eine SQL-Abfrage zur Ermittlung der Leichen bauen und werde berichten.
Falls jemand ein ähnliches Verhalten und ggf. auch schon die Ursachen kennt: bitte melde Dich 🙂
Ein Kommentar zu „Fehler in der Shopware API – Entstehung von Datensatzleichen in der s_articles_details“