Warnung „Fehlende Datenbankindizes in Nextcloud“ löschen
Die Nextcloud-Warnung „Datenbank enthält fehlende Indizes“ lässt sich beheben, indem Sie den Befehl occ db:add-missing-indicesals Webserver-Benutzer der korrekten Nextcloud-Installation ausführen. Der Befehl fügt die von Nextcloud oder installierten Anwendungen definierten, aber in der Datenbank fehlenden Indizes hinzu. Laut der aktuellen Nextcloud-35-Dokumentation --dry-runwird die SQL-Anweisung vor der Ausführung in einer Vorschau angezeigt.
Die Warnung erscheint in der Administrationsübersicht, wenn Nextcloud fehlende Indizes im Datenbankschema feststellt.
Was die Warnung bedeutet
Ein Datenbankindex ist eine Suchstruktur, die der Datenbank hilft, Zeilen zu finden, ohne die gesamte Tabelle durchsuchen zu müssen. Nextcloud und seine Apps fügen mitunter Indizes hinzu, um Abfragen zu optimieren. Bei einem Upgrade kann diese Aufgabe dem Administrator obliegen, da das Erstellen eines Index für eine große Tabelle zeitaufwändig sein und die Performance beeinträchtigen kann. Die Warnung vor einem fehlenden Index ist in der Regel ein Wartungshinweis und kein Beweis dafür, dass Dateien oder Datenbankeinträge beschädigt sind.
Die aktuelle Befehlsreferenz für Nextcloud- Datenbanken beschreibt db:add-missing-indicesdas Hinzufügen von Indizes, die zwar dem erwarteten Schema entsprechen, aber in der aktuellen Installation fehlen. Das Handbuch dokumentiert außerdem --dry-rundie Vorschau von SQL-Anweisungen. Die genauen Indizes hängen von Ihrer Nextcloud-Version und den installierten Anwendungen ab.
Server vorbereiten
Prüfen Sie, auf welcher Nextcloud-Instanz die Warnung angezeigt wird, insbesondere wenn Sie Staging- und Produktionsumgebungen oder mehr als einen Container verwalten.
Stellen Sie sicher, dass eine aktuelle Datenbanksicherung vorhanden ist und Sie wissen, wie Sie diese wiederherstellen. Dieser Befehl ändert die Datenbankstruktur. Bearbeiten oder löschen Sie Indizes nicht manuell als Ersatz.
Führen Sie den Befehl aus, wenn die Datenbankauslastung moderat ist. Laut Nextcloud-Upgrade-Richtlinien kann der Server während dieses Vorgangs online bleiben, allerdings kann die Indizierung einer großen Tabelle Zeit in Anspruch nehmen und die Antwortgeschwindigkeit vorübergehend beeinträchtigen.
Ermitteln Sie das Nextcloud-Installationsverzeichnis, die vom Webserver verwendete PHP-CLI-Version und das Betriebssystem-Benutzerkonto des Webservers. Dieses Benutzerkonto befindet sich häufig www-dataunter Debian oder Ubuntu, apacheunter Fedora oder CentOS und httpunter Arch Linux.
Die OCC-Anleitung von Nextcloud erklärt, dass occes sich dabei um die Befehlszeilenschnittstelle des Servers handelt und diese als HTTP-Benutzer ausgeführt werden muss, damit Dateibesitz und Berechtigungen konsistent bleiben. Verwenden Sie diese Schnittstelle nicht www-dataohne Weiteres, wenn Ihre Installation ein anderes Benutzerkonto verwendet.
Vorschau und Hinzufügen der fehlenden Indizes
Für eine Standard-Archivinstallation unter Debian oder Ubuntu öffnen Sie eine Shell auf dem Nextcloud-Server und wechseln Sie in das Verzeichnis, das die occDatei enthält. In diesem Beispiel wird verwendet /var/www/nextcloud; Ihr Pfad kann abweichen.
cd /var/www/nextcloud
sudo -E -u www-data php occ db:add-missing-indices --dry-run
Der Testlauf gibt den SQL-Code aus, der ohne Datenbankänderung ausgeführt würde. Überprüfen Sie die Ausgabe und stellen Sie sicher, dass es sich um die erwartete Wartungsoperation handelt. Die --dry-runOption ist im aktuellen Nextcloud-35-Handbuch dokumentiert. Falls eine ältere Version sie ablehnt, konsultieren Sie die Befehlshilfe dieser Version, anstatt Optionen willkürlich zu entfernen.
Nutzen Sie die dokumentierte Testlaufoption, um den SQL-Code zu überprüfen, bevor Sie eine Änderung an der Datenbank vornehmen.
Wenn Sie die Änderung anwenden möchten, führen Sie den Befehl ohne Doppelpunkt aus --dry-run.
Nextcloud prüft die relevanten Tabellen und meldet den Fortschritt. Lassen Sie den Vorgang abschließen; unterbrechen Sie ihn nicht, nur weil die Prüfung einer großen Tabelle länger dauert als erwartet. Im Upgrade-Handbuch ist dieser Befehl unter den längeren Schema-Aufgaben aufgeführt, die ausgeführt werden können, während die Instanz online bleibt. Daher ist es normalerweise nicht erforderlich, den Wartungsmodus für diese Reparatur zu aktivieren. Vermeiden Sie während der Ausführung gleichzeitige Datenbankwartungsarbeiten.
Der Befehl prüft die Datenbanktabellen und kehrt nach Abschluss zur Shell zurück.
Wenn Nextcloud in Docker läuft
Führen Sie occden Befehl im Nextcloud-Anwendungscontainer aus, nicht im separaten Datenbankcontainer. Für einen Container nextcloudmit dem üblichen www-dataBenutzerkonto lautet der Befehl üblicherweise:
Ersetzen Sie <Anwendungscontainername> nextclouddurch den tatsächlichen Namen Ihres Anwendungscontainers. Falls Ihr Image oder Ihre Bereitstellung einen anderen Containerbenutzer, eine andere PHP-Binärdatei oder einen anderen Befehlswrapper verwendet, befolgen Sie die Dokumentation des jeweiligen Images und führen Sie den Befehl weiterhin als HTTP-Benutzer aus.
Überprüfen Sie, ob die Warnung verschwunden ist.
Nach Abschluss des Befehls aktualisieren Sie die Administrationseinstellungen unter „Übersicht“ . Die Meldung über fehlende Indizes sollte verschwinden, sobald Nextcloud die Indizes erkennt. Sie können den Befehl auch erneut ausführen; er sollte nun abgeschlossen sein, ohne dass Sie die fehlenden Indizes erneut hinzufügen müssen. Dies bestätigt, dass die Schemaprüfung abgeschlossen ist, misst aber nicht die Gesamtleistung der Datenbank.
Aktualisieren Sie nach Abschluss des Befehls die Administrationsübersicht und prüfen Sie, ob die Datenbankwarnung verschwunden ist.
Wenn die Warnung weiterhin angezeigt wird
Vergewissern Sie sich, dass Sie den Befehl auf derselben Nextcloud-Installation und Datenbank ausgeführt haben, die die Warnung erzeugt hat. Ein häufiger Fehler ist die Ausführung in einem Wartungscontainer, einer Staging-Instanz oder einem Datenbankcontainer.
Prüfen Sie, ob der Befehl als korrekter Webserver-Benutzer ausgeführt wurde und dieselbe PHP-Version wie der Webserver verwendet wurde. Nextcloud weist darauf hin, dass eine abweichende PHP-Konfiguration der Befehlszeile zu occFehlern führen kann.
Führen Sie in Nextcloud 35 und höher den Befehl aus, sudo -E -u www-data php occ db:schema:checkum Schemaunterschiede zu untersuchen. Laut der aktuellen Dokumentation wurde diese Prüfung in Version 35 hinzugefügt. Verwenden Sie in früheren Versionen die für diese Version dokumentierten Diagnosefunktionen.
Falls der fehlende Index zu einer Drittanbieter-App gehört oder der Befehl einen Fehler meldet, aktualisieren Sie die App, sofern ein Update verfügbar ist. Überprüfen Sie anschließend das Nextcloud-Protokoll und die Befehlsausgabe und wenden Sie sich mit den genauen Index- und Tabellennamen an den App-Entwickler oder den Nextcloud-Support. Führen Sie keine manuell erstellten CREATE INDEXAnweisungen aus, es sei denn, der App- oder Datenbankentwickler stellt diese für Ihr spezifisches Schema bereit.
Bei einem Produktionsserver sollte die Datenbanksicherung so lange aufbewahrt werden, bis die Warnung behoben ist und die Anwendung wieder normal funktioniert. Die Upgrade-Anleitung von Nextcloud beschreibt die Online-Wartung und den optionalen Testlauf.