Hallo,
ich versuche seit einigen Tagen ein Update von Version 5.5.7 auf 5.5.8. Alle Versuche, über Backend oder Shell, enden mit dem Fehler:
No mapping found for field ‘shop’ on class ‘Shopware\Models\Attribute\Shop’.
Das Update läuft durch, aber beim Aufräumen bricht es dann immer ab und der Shop steht im Wartungsmodus. Danach komme ich nur über das Backup zurück zur lauffähigen Version 5.5.7. Ich habe mehrfach die Foreign-Keys repariert und den Cache gelöscht. Sämtliche Update Varianten scheitern aber immer wieder. Hat jemand eine Idee, was man noch versuchen könnte? Ich bin für jeden Ansatz dankbar.
das hat mit dem Update nichts zu tun, dass scheint schon vor dem Update kaputt zu sein. Das Update leert nur den kompletten Cache auf dem Server und es scheinen die Foreign-Keys defekt zu sein.
ich habe das Problem gelöst. Der Hinweis mit den Foreign-Keys war gut, aber das Script ist leider unvollständig. In meinem Fall musste ich folgendes ergänzen:
DROP TABLE IF EXISTS s_core_shops_attributes_new;
DROP TABLE IF EXISTS s_core_shops_attributes_backup;
– Copy structure and data to new table, this does _not_ copy the foreign keys, that’s exactly what we want
CREATE TABLE s_core_shops_attributes_new LIKE s_core_shops_attributes;
INSERT INTO s_core_shops_attributes_new SELECT * FROM s_core_shops_attributes;
RENAME TABLE s_core_shops_attributes TO s_core_shops_attributes_backup, s_core_shops_attributes_new TO s_core_shops_attributes;
– Add missing foreign key
ALTER TABLE s_core_shops_attributes ADD FOREIGN KEY ( shopID ) REFERENCES s_core_shops ( id
) ON DELETE CASCADE ON UPDATE NO ACTION ;
DROP TABLE s_core_shops_attributes_backup;
Danach habe ich das Update im Backend durchlaufen lassen und bin jetzt auf Version 5.5.8 .
ja, wie damals beschrieben, war das Problem damit gelöst. Ich weiß nicht, wie fit Du in SQL bist, aber es war folgendes Ding:
die Tabellen sind über Fremdschlüssel (Foreign-Keys) miteinander verknüpft. Wenn es da Defekte gibt, kommt es zu Problemen. Shopware bietet dafür das Reparaturscript https://docs.shopware.com/de/shopware-5-de/tutorials-und-faq/foreign-keys-reparieren an. In meinem Fall war die Verknüpfung von s_core_shops und s_core_shops_attributes verlorengegangen. Leider hat das Reparaturscript von Shopware genau diese Tabellen nicht berücksichtigt. Du musst es also erweitern, um die Tabellen, um die es bei Dir geht. Du erkennst das an der Fehlermeldung, in meinem Fall: No mapping found for field ‚shop‘ on class ‚Shopware\Models\Attribute\Shop‘, um welche Tabellen es geht.
BTW: bei mir ist das danach noch mehrfach mit anderen Tabellen passiert, bevor das Update sauber durchgelaufen ist. Du musst Dich da einfach „durchreparieren“. Das Script ist immer das Gleiche, nur die Tabellennamen sind auszutauschen.