Fehlermeldung der Datenbank "Row size too large"
Bei einem Contao Update bzw. beim Aktualisieren der Datenbank erscheint eine ähnliche Fehlermeldung wie diese im Logfile.
request.CRITICAL: Uncaught PHP Exception Doctrine\DBAL\Exception\DriverException: "An exception occurred while executing a query: SQLSTATE[42000]: Syntax error or access violation: 1118 Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs"
Was ist hierfür die Ursache?
Das Problem entsteht, weil die maximal erlaubte Anzahl an Felder in einer Tabelle überschritten wurde.
Lösungsansätze:
Das Problem ist bei Contao und im Internet bekannt. Es gibt dazu auch bereits entsprechende Tickets auf Github, um das Problem zu lösen:
-
Row size too large depends on history of table · Issue #6653 · contao/contao
-
Add a warning for too large database row sizes by ausi · Pull Request #4179 · contao/contao
Achtung
Bevor du jetzt weiter machst, erstelle unbedingt ein Backup der Datenbank!
Was kannst du aktuell selbst machen, um das Problem zu lösen? Hierzu hast du nachfolgende Möglichkeiten:
- Versuche das Datenbankupdate über das Installtool bzw. über den Contao Manager. Je nachdem, was du bisher nicht probiert hast.
-
Versuche die Datenbankaktualisierung direkt über die Konsole und führe folgenden Befehl im Contao-Verzeichnis aus:
php vendor/bin/contao-console contao:migrate - Aktiviere den Debugmodus, um herauszufinden, welche Tabelle betroffen ist. Den Debugmodus kannst du über den Contao Manager unter Systemwartung :: Debugmodus aktivieren. Anschließend erneut das Datenbankupdate über den Manager starten und die Fehlermeldung prüfen.
-
Wenn über den Debugmodus keine Tabelle angegeben wird, dann kannst du versuchen, jeden SQL-Befehl einzeln über das Tool phpMyAdmin auszuführen.
Dazu kopierst du jede einzelne Anweisung aus dem Installtool bzw. Contao Manager in den phpMyAdmin und führst diese aus.
-
Irgendwann kommt dann die Fehlermeldung direkt nach dem Ausführen des SQL-Befehls und du weißt, welche Tabelle es betrifft.
- Wenn du den Namen der betroffenen Tabelle kennst, dann versuche eine Optimierung durchzuführen.
Dazu führst du über den phpMyAdmin den folgenden SQL-Befehl aus:OPTIMIZE TABLE tl_module
(tl_module ist durch die entsprechende Tabelle mit dem Problem zu ersetzen).
Im Anschluss versuchst du, das Datenbankupdate erneut. - Wenn z. B. tl_module betroffen ist, dann solltest du prüfen, ob unnötige Erweiterungen entfernt werden können. So kann es z. B. auch helfen, nicht benötigte Core-Erweiterungen wie das FAQ-Modul, Newsletter-Modul, usw. zu entfernen, um weniger Feld in der Tabelle zu haben.
- Eine weitere Möglichkeit ist es, bei der Tabelle bestimmte Felder vom Datentyp blob auf den Datentyp text zu ändern. Das geht ebenfalls über den phpMyAdmin.
Häufig hilft eine der Maßnahmen um das Problem in den Griff zu bekommen.
Zuletzt aktualisiert am 25.01.2024 von Christian Feneberg.
Weitere häufige Fragen zu Contao
- Contao Manager: Den Pfad zur PHP-Binary manuell in der manager.json hinterlegen
- Ist die Endung yml oder yaml bei den Konfigurationsdateien korrekt?
- Contao Website als iFrame auf fremder Seite zulassen
- Fehlermeldung mit Datenbankversion beim Aktualisieren der Datenbank
- URL-Umleitung mit der Erweiterung contao-url-rewrite
- Wie lässt sich eine alte Contao-Version über den Contao Manager installieren?
- Formulare - Kopie der Formulardaten per E-Mail an den Absender
- Tipps zur Fehlerbehebung, wenn Bilder oder das CSS im Frontend fehlen
- Seiten lassen sich mit und ohne "index.php" aufrufen
- Notification Center: raw_data mit Zeilenumbruch ausgeben
- Meldung: Ihr Datenbank-Server läuft nicht im Strict-Mode!
- Der Contao Suchindex ist leer bzw. die Suche liefert keine Ergebnisse
- Alles Wichtige über Contao 3.5
- Welche Contao Version habe ich?
- Wie installiere ich Contao?
- Welche PHP-Version benötigt Contao?
- Was kostet Contao?
- MAMP 6.6 Fehler: "Error handling the Composer Resolver Cloud. Please try again later"
- Lokale Contao Installation bei MAMP schlägt fehl: "exception occured … figure out your platform version"
- Contao 4 - Anwendungs-Cache leeren
- Contao Manager hängt beim Hintergrund-Prozess: Contao Manager aktualisieren fest
- Fehlermeldung: PHP symlink method is unavailable…
- Composer, Contao Manager und allow-plugins