Magento: Verschwundene Produktbilder nach Import wiederherstellen
Ich bin gerade damit beschäftigt einen Magento-basierten, Onlineshop auf einen leistungsstärkeren Server umzuziehen. Nicht gerade unproblematisch, wie sich heraus stellen sollte – vor allem, wenn damit auch gleichzeitig ein Versions-Upgrade von Magento 1.3 auf Magento 1.5 einher geht. So leistungsfähig und flexibel wie Magento auch sein mag: dabei tut sich so mancher Abgrund auf! Hier ein kleines Beispiel.
Problem:
Nachdem ich die Daten per CSV Import/Export in den neuen Shop eingespielt hatte, sah alles sehr zufriedenstellend aus: die Produkte tauchten auf der Shopseite inkl. Bilder auf. Änderte man allerdings die Kategorie eines dieser Produkte, verschwand die Produktabbildung! Ein kurzer Blick in den Produktkatalog im Backend zeigte: die »Bilder«-Reiter sämtlicher importierten Produkte enthielten keine Daten mehr. Allem Anschein nach wurde beim Kategoriewechsel dann auch noch die letzte Referenz zur ursprünglich zugewiesenen Bilddatei gelöscht.
Lösung:
Sicherheitskopie der Datenbank machen – sicher ist sicher!
Nach einem CSV Produktimport muss folgendes SQL-Skript auf der Magento-Datenbank ausgeführt werden (bspw. per phpMyAdmin):
INSERT INTO catalog_product_entity_media_gallery (attribute_id, entity_id, `value`) SELECT ga.attribute_id, v.entity_id, v.value FROM catalog_product_entity_varchar v INNER JOIN eav_entity_type et ON et.entity_type_code='catalog_product' INNER JOIN eav_attribute va ON va.entity_type_id=et.entity_type_id AND va.frontend_input='media_image' AND va.attribute_id=v.attribute_id INNER JOIN eav_attribute ga ON va.entity_type_id=et.entity_type_id AND ga.attribute_code='media_gallery' LEFT JOIN catalog_product_entity_media_gallery g ON g.entity_id=v.entity_id AND g.value=v.value WHERE v.value<>'no_selection' AND v.value<>'' AND g.value IS NULL;
Dadurch werden die korrekten Einträge im »Bilder«-Reiter für die betroffenen Produkte wieder hergestellt.
Vielen Dank an Unirgy, der diese Lösung im offiziellen Magento-Wiki bereitgestellt hat.






“dabei tut sich so mancher Abgrund auf” – Oh ja, ich weiß nur zu gut, was du meinst. Ich kämpfe seit einigen Tagen mit den selben Problemen…
Danke für den Tip.
Gruß, Kai
jau, das rockt – ist zwar kein praktikabler Ansatz für den Enduser, aber zumindest mal nen Schritt weiter.
Nachtrag: mit diesem Skript werden dann auch die Einträge unter _links_upsell_sku mit übernommen.