Unknown database type json

Beim installieren eines Plugins (product designer) bekomme ich die Fehlermeldung

Unknown database type json requested, Doctrine\DBAL\Platforms\MySqlPlatform may not support it.

Der Shop lief unter mySQL 5.6, ich hatte das ganze auf einen Server mit mysql 5.7.27 kopiert. Die Fehlermeldung blieb allerdings die selbe. Dann habe ich in der config.php noch den parameter [db][serverVersion] auf “5.7.27” gesetzt und auch den doctrine-cache geleert.

Die Meldung bleibt. Da das Plugin auch unter älteren SQ-Versionen läuft (die kein mySQL 5.7 unetrstützen) muss es ja irgendwie an SW (5.6.6) liegen. Hat jemand eine idee wie ich diesen Fehler beseitige?

Hi wecotec,

vermutlich hast du in deiner Datenbank irgendeine Tabelle (muss nicht von Shopware sein), die JSON als Spaltentyp nutzt. Doctrine kennt den Spaltentyp nicht und wirft die Exception.

Im Log der Exception, die du hier nicht gepostet hast, findest du auch den Namen der betroffenen Tabelle.

Entweder du trennst dich von der JSON-Spalte und machst sie zur TEXT-Spalte, oder du erstellst ein Plugin, um JSON als Datentyp in Shopware bekannt zu machen: php - Can't register custom DBAL types - Stack Overflow 

Hier siehst du, welche Spaltentypen Doctrine standardmäßig unterstützt:
vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/Type.php

 

Es liegt an der konfigurierten Server Version für Mysql in der config.php Datei → einfach ins Array " ‚serverVersion‘ => ‚5.7‘" mit aufnehmen, dann funktioniert es wieder.

Als Beispiel:

return array(
    'db' =>
        array(
            'username' => 'xxx',
            'password' => 'xxx',
            'host' => 'xxxx',
            'port' => 'xxx',
            'dbname' => 'xxxxx',
            'serverVersion' => '5.7'
        ),
    'csrfProtection' => [
        'frontend' => false,
        'backend' => false
    ],
    'httpcache' => [
        'debug' => true
    ],
    'phpsettings' => [
        'display_errors' => 1
    ],
    'front' => [
        'throwExceptions' => true,
        'showException' => true
    ],
    'template' => [
        'forceCompile' => true
    ],
);