MariaDB

Ja, so ist das halt.

Das ist ja schon ein bisschen nervig: Jedes mal wenn ich Orbstack gestartet habe und wieder beende um danach meinen lokalen MariaDB Server wieder zu starten, kann die InnoDB Engine nicht initialisiert werden, weil irgendwelche Dateien fehlen. Dh. ich muss alles bis auf das mysql-Unterverzeichnis auf dem /opt/homebrew/var/mysql-Verzeichnis löschen und kann dann den Server wieder ohne Fehler starten. Danach kann ich mir dann den Spaß gönnen wieder alle Datenbank zu importieren. Sehr witzig!

Ich hatte auch mal versucht InnoDb im Recovery Mode zu starten um dann vor dem Löschen der Verzeichnisse alle Datenbank zu dumpen. Nix! Segmentation Fault! Sehr erstaunlich!

Ich will das Problemchen nun nicht zwangsweise Orbstack in die Schuhe schieben, da ich die exakte Ursache noch nicht herausgefunden habe. Bei gurkenOS kann das ja an fast allem liegen.

Ich sehe lediglich die Korrelation: Wenn ich mit brew services stop/start mariadb den MariaDB Server beende und wieder starte, kann ich das solange machen bis der Prozessor verglüht und jedes Mal startet der Server einwandfrei. Aber starte ich einmal Obstack, wenn MariaDB schon aus ist, beende Orbstack wieder und versuche dann den SQL Server wieder zu starten: Kaboom? Yes, Rico. Kaboom!

Unknown database type enum requested

Bei der Installation einer Shopware App, die Entities (Resources/entities.xml) enthält, wird mir bei Shopware 6.4 mitunter ein lapidares Unknown database type enum requested, MariaDb1027Platform may not support it. auf der Konsole entgegen gehustet. Das tritt auf, wenn man MariaDB benutzt und Plugins installiert sind, die Datenbanktabellen erstellen, die Felder des Typs EUNUM haben. Shopware scheint sich hier wohl Doctrine zu bedienen um Entities aus der XML Datei der App anzulegen.

Wenn es sich um eine fremdes Plugin mit den betroffenen Tabellen handelt, mache ich es mir idR. einfach und wandle die ENUM Spalten in ausreichend große VARCHAR Spalten um. Und dann klappt auch der Spaß mit der App Aktivierung.

Es ist per SQL Query relativ einfach die "schuldigen" Tabellen und Spalten zu finden:

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 = 'Meine_Shopware_Datenbank' 
order by col.table_schema,
    col.table_name,
    col.ordinal_position;

Meine_Shopware_Datenbank muss natürlich durch den entsprechenden Namen der Shopware DB ausgetauscht werden.