Unknown database type enum requested

Hallo zusammen,

ich erhalte in einem Shop in der Konsole die Meldung:_

16:03:03 CRITICAL [console] Error thrown while running command „dal:validate“. Message: „Unknown database type enum requested, Doctrine\DBAL\Platforms\MySQL80Platform may not support it.“ [„exception“ => Doctrine\DBAL\Exception^ { …},„command“ => „dal:validate“,„message“ => „Unknown database type enum requested, Doctrine\DBAL\Platforms\MySQL80Platform may not support it.“]

In AbstractPlatform.php line 454:

Unknown database type enum requested, Doctrine\DBAL\Platforms\MySQL80Platform may not support it.

dal:validate

Was sollen mir diese Worte sagen? :thinking:

Möchte da ein Plugin einen falschen Datentyp nutzen?

Grüße
sunflower

Hey @sunflower,

hab hierzu gerade ein ähnliches Support-ticket gehabt und die Ursache hierbei war die Pickware ERP Starter Erweiterung.
Problem ist hierbei allerdings, dass der Fehler durch den Typen „enum“ ausgelöst wird. Heißt die Erweiterung muss komplett entfernt werden um den Fehler zu beheben, da sonst die Spalten weiterhin in der Datenbank sind.
Muss in diesem Fall aber auch nicht Pickware ERP Starter sein. Am besten kannst du einmal schauen, welche Spalten den Typ „enum“ haben.
Folgender SQL Befehl gibt dir diese Spalten aus:

select col.table_schema as database_name,
       col.table_name,
       col.ordinal_position as column_id,
       col.column_name,
       col.data_type,
       trim(leading 'enum' from col.column_type) as enum_values
from information_schema.columns col
join information_schema.tables tab on tab.table_schema = col.table_schema
                                   and tab.table_name = col.table_name
                                   and tab.table_type = 'BASE TABLE'
where col.data_type in ('enum')
      and col.table_schema not in ('information_schema', 'sys',
                                   'performance_schema', 'mysql')
     --and col.table_schema = 'database_name' -- put your database name here
order by col.table_schema,
         col.table_name,
         col.ordinal_position;

MfG
Patrick

1 „Gefällt mir“

Hallo Patrick,

prima, danke für die Info.

Wer denkt sich denn so eine SQL-Anweisung aus? :astonished:

Grüße
sunflower

Danke für den Tipp!

Ich hatte nach Ausführung von bin/console dal:validate ebenfalls Fehler.

Zuerst den:

Data Abstraction Layer Validation
=================================

Checking for errors in entity definitions
=========================================

00:05:17 CRITICAL  [console] Error thrown while running command "dal:validate". Message: "Unknown database type enum requested, Doctrine\DBAL\Platforms\MySQL80Platform may not support it." ["exception" => Doctrine\DBAL\Exception^ { …},"command" => "dal:validate","message" => "Unknown database type enum requested, Doctrine\DBAL\Platforms\MySQL80Platform may not support it."]

In AbstractPlatform.php line 452:
                                                                                                     
  Unknown database type enum requested, Doctrine\DBAL\Platforms\MySQL80Platform may not support it. 

über den ich zu diesem Beitrag gekommen bin. Und dann (eigentlich ohne etwas zu ändern) den:

Data Abstraction Layer Validation
=================================

Checking for errors in entity definitions
=========================================

00:15:10 CRITICAL  [console] Error thrown while running command "dal:validate". Message: "Undefined constant Redgecko\Magnalister\Core\Content\Bundle\BundleCookieDefinition::ENTITY_NAME" ["exception" => Error { …},"command" => "dal:validate","message" => "Undefined constant Redgecko\Magnalister\Core\Content\Bundle\BundleCookieDefinition::ENTITY_NAME"]

In DefinitionValidator.php line 1028:
                                                                                                   
  Undefined constant Redgecko\Magnalister\Core\Content\Bundle\BundleCookieDefinition::ENTITY_NAME  

Ich musste es etwas anpassen damit es bei mir geklappt hat, mit der Version hat es bei mir in Shopware 6.6.6.1 funktioniert:

SELECT col.table_schema AS database_name,
       col.table_name,
       col.ordinal_position AS column_id,
       col.column_name,
       col.data_type,
       TRIM(LEADING 'enum' FROM col.column_type) AS enum_values
FROM information_schema.columns col
JOIN information_schema.tables tab 
  ON tab.table_schema = col.table_schema
 AND tab.table_name = col.table_name
 AND tab.table_type = 'BASE TABLE'
WHERE col.data_type IN ('enum')
  AND col.table_schema NOT IN ('information_schema', 'sys', 'performance_schema', 'mysql')
  -- and col.table_schema = 'database_name' -- Korrigierter Kommentar
ORDER BY col.table_schema,
         col.table_name,
         col.ordinal_position 
LIMIT 0, 25;

Das Problem lag am Magnalister Plugin in Version 3.2.96 und auch nach einem Update die aktuellste kompatible Version 3.3.06 wurde der gleiche Eintrag noch mit dem Befehl in phpmyadmin gefunden.

Nach dem ich das Magnalister Plugin deinstalliert habe, wurde ich nach dem selben Befehl zur Belohnung mit einer Liste von +400 Warnungen begrüßt:
https://codepen.io/great2gether/pen/WbvWJpm

Sehr prickelnd :slight_smile: