HINWEIS: Dieser Post bezieht sich auf SW in Version 3.03 – ob sich die Datenbankstruktur in der aktuellen Version geändert hat, ist zu klären.
Nicht nur wer seinen Shopware Shop mehrsprachig betreibt, kennt die Vorteile der Textbausteine; einmal ordentlich angelegt, können Sie bequem über das Backend verwaltet und z.B. auch übersetzt werden.
Für ein recht umfangreiches System sollten etwa 800 Textbausteine übersetzt und anschließend wieder in Shopware importiert werden. Nach dem Import der übersetzten CSV-Datei über das Import-Tool im Backend (Einstellungen / Textbausteine) wurde zwar eine Erfolgsmeldung ausgegeben, offensichtlich wurden die Textbausteine aber nicht korrekt übernommen, denn die Übersetzungen waren nicht im Shop sichtbar und auch die entsprechende Flagge, welche üblicherweise das Vorhandensein einer Übersetzungen kennzeichnet, war nicht farblich hinterlegt. Nach vielen Versuchen und Umwegen über eigene Skripte wurde deutlich: die in der Datenbank (in der Tabelle s_core_translations) abgelegten, mit der PHP-Funktion serialize() serialisierten Daten wurden offensichtlich ab einer gewissen Stelle einfach abgeschnitten, sodass beim Deserialisieren kein lesbares Datenobjekt entstehen konnte. Verdächtigerweise wurde immer nach 65.535 Zeichen abgeschnitten – die maximale Länge des Datentyps Text in MySQL Datenbanken.
Nachdem das Problem nun deutlich ist, liegt die Lösung ergreifend nah: das Ändern des Typs des Feldes objectdata der Tabelle in mindestens den Typ Mediumtext (16.777.215 Zeichen) schafft genug Platz, um alle +800 Textbausteine zu in serialisierter Form zu verspeichern.
Tags: datenbank, import, problem, shopware, textbausteine
