Shopware Update - Slim Application Error - charset: utf8mb4

Hallo liebe Shopware-Gemeinde,

beim Update auf die Shopware Version 5.4.1. erhalte ich folgende Fehlermeldung:

Slim Application Error

The application could not run because of the following error:
Details
Type: RuntimeException
Code: 2019
Message: Could not connect to database. Message from SQL Server: SQLSTATE[HY000] [2019] Can’t initialize character set utf8mb4 (path: /usr/share/mysql/charsets/)
File: /var/www/web505/html/sw5/engine/Shopware/Components/DependencyInjection/Bridge/Db.php
Line: 78
Trace

#0 /var/www/web505/html/sw5/engine/Shopware/Kernel.php(313): Shopware\Components\DependencyInjection\Bridge\Db::createPDO(Array)
#1 /var/www/web505/html/sw5/recovery/update/src/DependencyInjection/Container.php(180): Shopware\Kernel->boot()
#2 /var/www/web505/html/sw5/recovery/common/vendor/pimple/pimple/src/Pimple/Container.php(113): Shopware\Recovery\Update\DependencyInjection\Container->Shopware\Recovery\Update\DependencyInjection{closure}(Object(Pimple\Container))
#3 /var/www/web505/html/sw5/recovery/update/src/DependencyInjection/Container.php(189): Pimple\Container->offsetGet(‚shopware.contai…‘)
#4 /var/www/web505/html/sw5/recovery/common/vendor/pimple/pimple/src/Pimple/Container.php(113): Shopware\Recovery\Update\DependencyInjection\Container->Shopware\Recovery\Update\DependencyInjection{closure}(Object(Pimple\Container))
#5 /var/www/web505/html/sw5/recovery/common/src/DependencyInjection/Container.php(80): Pimple\Container->offsetGet(‚shopware.theme_…‘)
#6 /var/www/web505/html/sw5/recovery/update/src/app.php(169): Shopware\Recovery\Common\DependencyInjection\Container->get(‚shopware.theme_…‘)
#7 [internal function]: {closure}()
#8 /var/www/web505/html/sw5/recovery/common/vendor/slim/slim/Slim/Route.php(462): call_user_func_array(Object(Closure), Array)
#9 /var/www/web505/html/sw5/recovery/common/vendor/slim/slim/Slim/Slim.php(1326): Slim\Route->dispatch()
#10 /var/www/web505/html/sw5/recovery/common/vendor/slim/slim/Slim/Middleware/Flash.php(85): Slim\Slim->call()
#11 /var/www/web505/html/sw5/recovery/common/vendor/slim/slim/Slim/Middleware/MethodOverride.php(92): Slim\Middleware\Flash->call()
#12 /var/www/web505/html/sw5/recovery/common/vendor/slim/slim/Slim/Middleware/PrettyExceptions.php(67): Slim\Middleware\MethodOverride->call()
#13 /var/www/web505/html/sw5/recovery/common/vendor/slim/slim/Slim/Slim.php(1271): Slim\Middleware\PrettyExceptions->call()
#14 /var/www/web505/html/sw5/recovery/update/index.php(69): Slim\Slim->run()
#15 {main}

Es gibt hier im Forum einen ähnlichen Thread bei dem geraten wird die PHP-Version upzudaten bzw. in der mySQL Einstellungen zu ändern:

Beides hat in meinem Falle nicht funktioniert. Die PHP-Version ist die aktuellste und eine Umstellung des charsets bei der mySQL bringt ebenfalls nichts.

Allerdings hatte ich derartige Probleme schon beim Updaten auf Version 5.3. Damals hat mir ein Berater unseres Hosters freundlicherweise geholfen. Er meinte man könne in einer .php die Überprüfung für das charset umstellen. Dies hat er dann gleich für mich gemacht und in wenigen Sekunden war das Problem geklärt.

Nun steht ich wieder vor dem selben Probleme und würde gerne wissen ob jemand hier im Forum ähnliche Erfahrungen gemacht hat und würde mich freuen wenn mir jemand sagen kann wo ich das Charset in der php selbst umstellen kann damit ich das in Zukunft selbst erledigen kann und nicht immer erst bei jedem Update jemanden anrufen muss.

Freue mich auf rege Antworten ;-).

Vielen Dank!

Naja generell wäre es sinniger das Charset in MYSQL zu erlauben. Hat ja einen Grund, warum das so gesetzt wird. 

Alles dndere kann nur eine Übergangslösung sein, bis das Hosting angepasst ist.

Man kann das über die config.php setzten als Parameter. Kann ich morgen mal nachsehen.

Vielen Dank, Moritz. Ich kann nur absolut zustimmen. Es ist eine Übergangslösung. Der Hoster arbeitet zur Zeit noch mit confixx, welches ja seit Jahren nicht mehr gewartet wird und auch einige Sicherheitslücken hat. Demnächst wir der Hoster allerdings Gott sei Dank das komplette System updaten. Bis dahin werde ich mit der Übergangslösung leben müssen.

Habe das jetzt mal nachgeschaut. Man kann das Charset über die config.php setzen. Dazu musst du einfach das DB-Array um eine weitere Stelle erweitern. Würde dann so aussehen:

    'db' => [
        'username' => 'xxx',
        'password' => 'xxx',
        'dbname' => 'xxx',
        'host' => 'xxx',
        'charset' => 'utf8mb4',
    ],

Dann hast du auch beim Update keine Probleme - die config.php wird nie überschrieben.

Hey Moritz,

vielen lieben Dank. Jetzt funktioniert alles einwandfrei und vorallem dauerhaft.

Liebe Grüße

Daniel