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";
Der Codeteil s:15:”Vornamen xxöxxx”; muss zu s:16:”Vornamen xxoexxx”; geändert werden.
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:
Magento 2 Datenbank upgrade
php bin/magento setup:upgrade
Diesmal sollte das sales Modul durchlaufen.