Merconis auf utf8mb4 umstellen

Trotz automatischer Installation noch Fragen? Hier werden Sie beantwortet!
Antworten
*igi*
Beiträge: 15
Registriert: 11. Nov 2017, 15:44

Merconis auf utf8mb4 umstellen

Beitrag von *igi* »

Hallo zusammen,

ich habe vor unsere Contao Datenbank auf das UTF-8mb4 Schema umzustellen. In dieser Contao Version soll auch eine Merconis Version laufen (V.3).
Gibt es hinsichtlich der genannten Datenbankumstellung etwas zu bedenken / zu befürchten?

VG
*igi*
Benutzeravatar
supportteam2
Beiträge: 427
Registriert: 4. Mär 2015, 14:05

Re: Merconis auf utf8mb4 umstellen

Beitrag von supportteam2 »

Hallo,

wenn Contao mit diesem Schema kein Problem hat, sehe ich auch bei Merconis kein Problem. Uns fehlen aber zugegebenermaßen Erfahrungswerte hierfür, sodass ich das nicht mit letzter Gewissheit sagen kann.

Mein Tipp daher: Führen Sie die Umstellung in einem Duplikat Ihres Projektes durch, sodass Sie gefahrlos prüfen können, ob danach alles reibungslos funktioniert.

Wenn Sie wissen, dass es geht, oder falls es wider Erwarten doch nicht problemlos funktioniert, geben Sie uns bitte kurz Bescheid.
*igi*
Beiträge: 15
Registriert: 11. Nov 2017, 15:44

Re: Merconis auf utf8mb4 umstellen

Beitrag von *igi* »

Hallo,

ich habe mich mit diesem Thema nun etwas ausführlicher beschäftigt. Das Resultat lautet, dass es leider doch noch Probleme bei der Verwendung UTF8mb4 innerhalb Contao (3.5) zu geben scheint.
Ich habe das Ganze mal untersucht (nur Contao, ohne Merconis) und bei GitHub ein Ticket zu diesem Thema erstellt: https://github.com/contao/core-bundle/issues/1201.

Ich vermute, dass der Support hier bei Contao einfach noch ausgebaut werden muss. Merconis trifft denke ich keine Schuld.

Ein Beobachtung habe ich jedoch noch gemacht: Wenn man es über (wie im Ticket beschrieben) Umwege hinbekommt, Contao zumindest mit utf8mb4_general_ci anstatt _unicode_ci zum Laufen zu bekommen und anschließend versucht das Ganze um Merconis zu erweitern, erhält man ebenfalls, wie auch im Ticket beschrieben, die Fehlermeldungen, dass die Keys der Tabellen zu lang wären:

Code: Alles auswählen

Fatal error: Uncaught exception Exception with message Query error: Specified key was too long; max key length is 1000 bytes (ALTER TABLE tl_ls_helpers_segmentizer CHANGE segmentationToken segmentationToken varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '') thrown in system\modules\core\library\Contao\Database\Statement.php on line 295

#0 system\modules\core\library\Contao\Database.php(207): Contao\Database\Statement->query('ALTER TABLE tl_...')
#1 system\modules\core\controllers\BackendInstall.php(577): Contao\Database->query('ALTER TABLE tl_...')
#2 system\modules\core\controllers\BackendInstall.php(178): Contao\BackendInstall->storeCollation()
#3 contao\install.php(20): Contao\BackendInstall->run()
#4 {main}
Dies lässt sich bei Contao internen Tabellen durch das setzen der Werte in der dcaconfig.php korrigieren:

Code: Alles auswählen

$GLOBALS['TL_DCA']['tl_files']['config']['sql']['keys']['path'] = 'index(250)'; 
.
.
.
Bei den Merconis Tabellen scheint dies jedoch nicht zu funktionieren:

Code: Alles auswählen

$GLOBALS['TL_DCA']['tl_ls_helpers_segmentizer']['config']['sql']['keys']['segmentationToken'] = 'index(250)';
Der Fehler bleibt hier bestehen. Behandelt Merconis die Indizes / Schlüssel der Tabellen hier anders als Contao? Da kann ich mir noch keinen Reim drauf machen.
Benutzeravatar
supportteam2
Beiträge: 427
Registriert: 4. Mär 2015, 14:05

Re: Merconis auf utf8mb4 umstellen

Beitrag von supportteam2 »

Hallo,

Merconis hat keine DCA-Datei für tl_ls_helpers_segmentizer, Ihr Versuch, eine DCA-Konfiguration zu überschreiben, ist daher zwangsläufig erfolglos. Bitte führen Sie die Anpassung mal direkt mittels PHPMyAdmin durch und prüfen Sie, ob es dann funktioniert.
*igi*
Beiträge: 15
Registriert: 11. Nov 2017, 15:44

Re: Merconis auf utf8mb4 umstellen

Beitrag von *igi* »

Ich habe die Anpassungen jetzt mal direkt im phpmyadmin durchgeführt.
Anschließend präsentiert Contao im install.php Tool folgende Fehlermeldung:

Code: Alles auswählen

Fatal error: Uncaught exception Exception with message Query error: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs (ALTER TABLE tl_ls_shop_payment_methods CHANGE payone_fieldNameStreet payone_fieldNameStreet varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '') thrown in system\modules\core\library\Contao\Database\Statement.php on line 295

#0 system\modules\core\library\Contao\Database.php(207): Contao\Database\Statement->query('ALTER TABLE tl_...')
#1 system\modules\core\controllers\BackendInstall.php(577): Contao\Database->query('ALTER TABLE tl_...')
#2 system\modules\core\controllers\BackendInstall.php(178): Contao\BackendInstall->storeCollation()
#3 contao\install.php(20): Contao\BackendInstall->run()
#4 {main}
Ich musste anschließend in etlichen Tabellen die Feldlänge von 255 auf 190 reduzieren

Beispiel (Auszug):

Code: Alles auswählen

payone_fieldNameAddressaddition
payone_fieldNameZip
payone_fieldNameCity
payone_fieldNameCountry
payone_fieldNameEmail
payone_fieldNameTelephonenumber
.
.
.
Darüber hinaus habe ich einige Einträge in der Merconis database.sql anpassen müssen, damit Contao getätigte Änderungen in der phpmyadmin Oberfläche nicht gleich wieder als "veraltete Tabelle" markiert und zurückspielen möchte.

Nach einem längeren hin und her (immer im install.php Tool, phpmyadmin und database.sql Anpassungen vornehmen, damit überall die gleichen Feldlängen definiert sind) scheint es jetzt aber zu gehen.
Allerdings habe ich die Befürchtung, dass dieses Vorgehen nicht wirklich updatesicher ist. Auch möchte ich mich in einem Produktivsystem noch nicht trauen, derartig große Änderungen an der Datenbank manuell durchzuführen.
Benutzeravatar
supportteam2
Beiträge: 427
Registriert: 4. Mär 2015, 14:05

Re: Merconis auf utf8mb4 umstellen

Beitrag von supportteam2 »

Wenn Sie etwas direkt über PHPMyAdmin ändern, dann wird das Contao-Install-Tool, welches ja den alten Zustand für richtig hält, natürlich immer eine Änderung vorschlagen. Diese können Sie aber natürlich ignorieren, wenn Sie genau wissen, dass der von Ihnen herbeigeführte Zustand der ist, den Sie tatsächlich haben wollen. Die database.sql einer Erweiterung, also z. B. Merconis zu ändern, ist natürlich nicht updatesicher. Es müsste meines Erachtens aber funktionieren, eine eigene Erweiterung zu schreiben, die als letzte geladen wird und die im Grunde nur eine database.sql mit den von Ihnen gewünschten Änderungen enthält. Dann sollte Ihnen das Contao-Install-Tool anbieten, die Änderungen so durchzuführen, dass das für Sie richtige Ergebnis rauskommt. Das wäre dann updatesicher und Sie müssten nichts in PHPMyAdmin machen.
Antworten

Zurück zu „Installation“