Nextcloud 31 (Hub 10): So behebst du das Zeilenformat-Problem

Beim Update auf Nextcloud 31 (Hub 10) tauchte plötzlich eine Fehlermeldung auf, dass das Zeilenformat in der Datenbank nicht optimal ist. Über phpMyAdmin ist das schnell gelöst – wie ich hier festgehalten habe.

Nextcloud 31 (Hub 10): So behebst du das Zeilenformat-Problem
Photo by engin akyurt / Unsplash

Beim Update auf Nextcloud 31 – auch bekannt als Hub 10 – kann es vorkommen, dass folgende Fehlermeldung erscheint:

🤖
"Falsches Zeilenformat in Ihrer Datenbank gefunden. ROW_FORMAT=Dynamic bietet die beste Datenbankleistung für Nextcloud. Bitte aktualisieren Sie das Zeilenformat in der folgenden Liste: [lange Liste der betroffenen Tabellen]"

Mit dem aktuellen Update wird das empfohlene Zeilenformat der Datenbanktabellen von COMPRESSED zu DYNAMIC geändert. Da aktuell keine automatische Konvertierung angeboten wird, muss dies händisch durchgeführt werden.


Hintergrund

Nextcloud 31 (Hub 10) bringt diverse Neuerungen mit sich, aber auch Änderungen an der Datenbankarchitektur.

Nach dem Update wird in der Prüfung, die in den Verwaltungseinstellungen angezeigt wird, nun auch kontrolliert, obdie Tabellen das optimale ROW_FORMAT=DYNAMIC besitzen. Wird dies nicht festgestellt, erscheint die oben genannte Fehlermeldung.
Aktuell gibt es für dieses Problem keinen automatisierten Fix – daher ist ein manueller Workaround notwendig.


Der Workaround: Manuelle Aktualisierung über phpMyAdmin

✍️
Wer Nextcloud nativ installiert hat, kann sich auch an folgender, kürzeren Anleitung, orientieren: https://got-tty.org/nextcloud-falsches-zeilenformat-row_formatdynamic/

Da die direkte Ausführung von Shell-Skripten in Docker-Umgebungen aufgrund von Passwortabfragen problematisch sein kann, bietet sich die Nutzung von phpMyAdmin als komfortable Alternative an. Mit phpMyAdmin lässt sich der Workaround in zwei einfachen Schritten umsetzen:

⚠️
HINWEIS: Bitte vorab unbedingt beachten!

Backup:
Erstelle vor diesen Änderungen unbedingt ein vollständiges Backup deiner Datenbank. So kannst du im Notfall problemlos den alten Zustand wiederherstellen.

Testumgebung:
Falls möglich, teste den Workaround zuerst in einer Test- oder Staging-Umgebung, um unvorhergesehene Probleme zu vermeiden.

Überprüfung:
Nach der Ausführung der Befehle solltest du in der Nextcloud-Oberfläche prüfen, ob die Fehlermeldung verschwunden ist und alles ordnungsgemäß funktioniert.

Schritt 1: Generiere die ALTER TABLE-Befehle

  1. Einloggen:
    Melde dich in phpMyAdmin an und wähle die betroffene Datenbank aus.
  2. SQL-Abfrage ausführen:
    Wechsle in den Reiter „SQL“ und führe folgende Abfrage aus:
SELECT CONCAT(
  'ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' ROW_FORMAT=DYNAMIC;'
) AS alter_command
FROM INFORMATION_SCHEMA.TABLES
WHERE ENGINE='InnoDB' AND ROW_FORMAT <> 'DYNAMIC';

Diese Abfrage generiert für jede betroffene Tabelle einen entsprechenden ALTER TABLE-Befehl, um das Zeilenformat auf DYNAMIC umzustellen.

  1. Ergebnis kopieren:
    Kopiere die generierten Befehle aus dem Ergebnisfenster in ein Textdokument oder in deine Zwischenablage.

Schritt 2: Führe die ALTER TABLE-Befehle aus

  1. Befehle einfügen:
    Gehe erneut in den Reiter „SQL“ in phpMyAdmin und füge alle kopierten ALTER TABLE-Befehle in das Eingabefeld ein.
  2. Befehle ausführen:
    Klicke auf „Los“ oder „Ausführen“, um die Befehle abzuschicken. Damit wird das Zeilenformat aller betroffenen Tabellen auf DYNAMIC umgestellt.

Happy Hosting und viel Erfolg beim Update! 😊

Kommentare gerne unter folgendem Post:

Post by @alex@libori.social
View on Mastodon