Nach dem Update auf Nextcloud 15.0.6 wartet im Admin-Bereich wieder einmal ein neuer Hinweis, der gelöst werden möchte. Diesmal ist die Datenbank betroffen, genauer gesagt der Zeichensatz der Tabellen. Glücklicherweise ist die Behebung des Problems recht schnell erledigt. Übrigens sind diese Meldungen meist keine wirklichen Fehlermeldungen. Oft handelt es sich im neue Features oder aktualisierte Funktionen im Nextcloud-Update, die eine Änderung der Konfiguration benötigen.
Die aktuelle Meldung lautet folgendermaßen:
- MySQL wird als Datenbank verwendet, unterstützt jedoch keine 4-Byte-Zeichen. Um beispielsweise 4-Byte-Zeichen (wie Emojis) ohne Probleme mit Dateinamen oder Kommentaren verarbeiten zu können, wird empfohlen, die 4-Byte-Unterstützung in MySQL zu aktivieren. Für weitere Details lesen Sie bitte die Dokumentationsseite hierzu.
Glücklicherweise spielt die DiskStation ausnahmsweise mal mit und bedarf keiner Sonderbehandlung.
Datenbank umstellen
- Verbindet euch via SSH (putty) mit eurer DiskStation.
- Legt eine neue Datei mit folgendem Befehl an:
sudo vi /var/packages/MariaDB10/etc/my.cnf
Nutzt ihr noch MariaDB5, lasst das 10 im Pfad weg.
- Fügt folgende Zeilen in die Datei ein:
[mysqld] innodb_file_per_table=1
- Im Paketzentrum deaktiviert und aktiviert ihr MariaDB wieder.
- Im phpMyAdmin (oder alternativ über die Kommandozeile) führt ihr folgendes SQL-Statement aus:
ALTER DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
Heißt eure Nextcloud-Datenbank anders, verwendet den richtigen Namen statt nextcloud.
Eure Datenbank unterstützt jetzt 4Byte-Zeichen, jetzt müsst ihr noch die bestehenden Einträge in den Tabellen aktualisieren.
Tabellen reparieren
- In der Kommandozeile wechselt in den Ordner eurer Nextcloud-Installation damit ihr die occ-Befehle ausführen könnt.
cd /volume1/web/nextcloud/
- Führt folgenden Befehl aus:
sudo -u http php72 -d memory_limit=1024M occ config:system:set mysql.utf8mb4 --type boolean --value="true"
- Jetzt noch den Reperatur-Vorgang starten:
sudo -u http php72 -d memory_limit=1024M occ maintenance:repair
Der Vorgang kann einige Zeit dauern und sollte für jede Tabelle der Nextcloud-Datenbank folgenden Output erzeugen:
Die Hinweismeldung ist jetzt verschwunden.
Habt ihr noch andere Meldungen im Admin-Bereich, dann schaut doch mal in diesem Artikel nach, hier findet ihr alle bisher aufgetauchten Meldungen gesammelt.
ich bekomme beim repair prozess folgende rot hinterlegte fehlermeldungen…
danach musste ich den maintenance mode manuell verlassen… (sudo -u http php72 occ maintenance:mode –off)
sagen dir diese zeilen etwas?
In AbstractMySQLDriver.php line 115:
An exception occurred while executing ‘ALTER TABLE `oc_addressbooks` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;’:
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes
In PDOStatement.php line 107:
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes
In PDOStatement.php line 105:
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes
Hallo,
Entschuldige die späte Antwort, In der Urlaubszeit hatte ich nur wenig Zeit.
Die Lösung ist folgende:
$ sudo mysql -u root -p
MariaDB [(none)]> use nextcloud;
MariaDB [nextcloud]> set global innodb_large_prefix=on;
MariaDB [nextcloud]> set global innodb_file_format=Barracuda;
$ sudo -u http php72 occ maintenance:repair
Allerdings sind die MySQL-Befehle über die Kommandozeile erfolgt. Theoretisch müssten die beiden set-Befehle auch über phpMyAdmin eingegeben werden können.
Klasse gemacht. Absolut *Daumen hoch*