Magento 2.2.x beinhaltet einige Neuerungen zu Magento 2.1.x. Dazu gehört unter anderem ein Update der Serialisierung in der Datenbank, da Magento diverse Daten ab 2.2.x als
JSON-String in der Datenbank speichert.
Wenn nun Magento von 2.1.x auf 2.2.x upgegraded wird, wie z.B. mit
Composer über die Kommandozeile, wird in Schritt 6 mit dem folgenden Befehl die Datenbank upgegraded, d.h. diverse Strings ins JSON Format konvertiert:
Magento 2 Datenbank upgrade
php bin/magento setup:upgrade
Im besten Fall klappt das ohne Probleme, aber manchmal eben auch nicht. Falls der Befehl beim Versuch, das sales Modul upzugraden, mit der Fehlermeldung:
Unable to serialize value abbricht, dann ist eine hohe Chance, dass Magento über Umlaute stolpert, speziell in der Tabelle
sales_payment_transaction, Spalte
additional_information. Siehe dazu auch folgenden
Bug-Report bei Magento.
Um den Shop upgradefähig zu machen, müssen alle Einträge in
sales_payment_transaction mit Umlauten in
additional_information händisch abgeändert werden. Ein Beispiel dazu:
Invalider Eintrag
a:20:{s:17:"cw_transaction_id";s:9:"000000097";s:1:"c";s:7:"process";s:1:"a";s:5:"index";s:9:"OPERATION";s:12:"CONFIRMATION";s:3:"TID";s:9:"000000097";s:6:"STATUS";s:6:"BILLED";s:5:"PRICE";s:4:"1980";s:8:"CURRENCY";s:3:"EUR";s:6:"P_TYPE";s:6:"SOFORT";s:5:"BRAND";s:6:"SOFORT";s:7:"MPAYTID";s:9:"102810538";s:10:"USER_FIELD";s:10:"cw:Magento";s:9:"ORDERDESC";s:0:"";s:8:"CUSTOMER";$\text{\bfseries s:15:"Vornamen xxöxxx";}$s:14:"CUSTOMER_EMAIL";s:24:"mail@isp.at";s:8:"LANGUAGE";s:2:"DE";s:11:"CUSTOMER_ID";s:0:"";s:14:"PROFILE_STATUS";s:7:"IGNORED";s:13:"FILTER_STATUS";s:0:"";s:9:"APPR_CODE";s:27:"159555-407737-5A2049EA-2624";
Reparierter Eintrag
a:20:{s:17:"cw_transaction_id";s:9:"000000097";s:1:"c";s:7:"process";s:1:"a";s:5:"index";s:9:"OPERATION";s:12:"CONFIRMATION";s:3:"TID";s:9:"000000097";s:6:"STATUS";s:6:"BILLED";s:5:"PRICE";s:4:"1980";s:8:"CURRENCY";s:3:"EUR";s:6:"P_TYPE";s:6:"SOFORT";s:5:"BRAND";s:6:"SOFORT";s:7:"MPAYTID";s:9:"102810538";s:10:"USER_FIELD";s:10:"cw:Magento";s:9:"ORDERDESC";s:0:"";s:8:"CUSTOMER";$\text{\bfseries s:16:"Vornamen xxoexxx";}$s:14:"CUSTOMER_EMAIL";s:24:"mail@isp.at";s:8:"LANGUAGE";s:2:"DE";s:11:"CUSTOMER_ID";s:0:"";s:14:"PROFILE_STATUS";s:7:"IGNORED";s:13:"FILTER_STATUS";s:0:"";s:9:"APPR_CODE";s:27:"159555-407737-5A2049EA-2624";
Das ö in xxöxxx lässt das Magento 2 upgrade stolpern. Also ändern wir es zu xxoexxx und passen die Zahl davor an. Diese gibt die Anzahl der Characters im String an. Da oe ein Character mehr ist als ö, muss die Zahl von 15 auf 16 erhöht werden.
Nachdem alle Einträge aktualisiert sind, das Datenbank-Update erneut anstoßen: