Sie öffnen die Administrationsübersicht von Nextcloud und sehen die Meldung: „Der Datenbank fehlen einige Indizes.“ Diese Warnung kann nach einem Upgrade erscheinen, da Nextcloud bestehenden Tabellen im Laufe der Zeit neue Indizes hinzufügen kann und diese bei großen Datenbanken nicht immer automatisch erstellt. Fehlende Indizes können Datenbankabfragen verlangsamen. Die unterstützte Lösung ist der integrierte occ db:add-missing-indicesBefehl.
Bevor Sie das Schema ändern, vergewissern Sie sich, dass Sie den Befehl für die richtige Nextcloud-Installation ausführen, erstellen Sie eine Datenbanksicherung und verwenden Sie den Betriebssystembenutzer des Webservers. Bei Versionen, die dies unterstützen, können Sie die vorgeschlagene SQL-Anweisung mit dem Befehl `sql` in der Vorschau anzeigen --dry-run. Führen Sie anschließend die Reparatur durch und überprüfen Sie die Administrationsübersicht erneut.
Was die Warnung bedeutet
Ein Datenbankindex ist eine Struktur, die der Datenbank hilft, Zeilen zu finden, ohne eine gesamte Tabelle durchsuchen zu müssen. Nextcloud und seine Apps definieren Indizes für die verwendeten Tabellen und Felder. Wenn eine neuere Nextcloud-Version oder App-Version einen Index einführt, der in einer bestehenden Installation noch nicht vorhanden ist, kann die Administrationsseite diese Diskrepanz melden. Es handelt sich dabei um eine Warnung zur Schema-Wartung; sie bedeutet nicht zwangsläufig, dass die Datenbank beschädigt ist oder Benutzerdateien fehlen.
Das Nextcloud-Administrationshandbuch beschreibt, wie Indizes im Laufe der Zeit hinzugefügt werden können, beispielsweise zur Leistungsverbesserung, und empfiehlt Administratoren, den Befehl auszuführen occ db:add-missing-indices. Das Hinzufügen eines Index kann einige Zeit in Anspruch nehmen, insbesondere bei großen Tabellen. Die Datenbanklast und das Sperrverhalten können je nach Datenbank-Engine und Arbeitslast variieren. Planen Sie die Änderung daher in einer weniger frequentierten Phase, falls Ihre Instanz stark ausgelastet ist.
Bevor Sie die Reparatur durchführen
- Bestätigen Sie den Installationspfad und die Version. Führen Sie Befehle aus dem Verzeichnis aus, das das gewünschte Installationsskript enthält
occ, oder geben Sie dessen vollständigen Pfad an. - Sichern Sie die Datenbank. Verwenden Sie dazu Ihr übliches Sicherungsverfahren für MariaDB/MySQL, PostgreSQL oder SQLite. Vergewissern Sie sich, dass die Sicherung abgeschlossen wurde und Sie wissen, wie Sie sie wiederherstellen können.
- Suchen Sie den HTTP-Benutzer. Verwenden Sie das Konto, auf dem der Webserver für Nextcloud läuft. Gängige Beispiele sind
www-dataDebian oder Ubuntu, apacheFedora oder CentOS, httpArch und wwwrunopenSUSE. Ihre Installation kann abweichen. - Prüfen Sie die Befehlsoptionen. Das stabile Administrationshandbuch von Nextcloud 35 dokumentiert diese
--dry-run. Falls Ihre installierte Version die Option nicht erkennt, konsultieren Sie die occ db:add-missing-indices --helpAusgabe dieser Version und überspringen Sie die Vorschau, anstatt anzunehmen, dass die Option vorhanden ist.
Die offizielle Sicherungsanleitung listet die Datenbank, die Konfiguration, das Datenverzeichnis und weitere Installationskomponenten auf, die für eine vollständige Sicherung aufbewahrt werden sollten. Erstellen Sie für diese Schemaoperation mindestens eine getestete Datenbanksicherung gemäß der für Ihre Datenbank geeigneten Vorgehensweise.
Schritt 1: Öffnen Sie eine Shell in der Nextcloud-Installation
Bei einer herkömmlichen Linux-Installation verbinden Sie sich per SSH mit dem Server und wechseln in das Nextcloud-Verzeichnis. Ein gängiger Ubuntu-Pfad ist `/usr/local/nextcloud` /var/www/nextcloud, verwenden Sie jedoch den Pfad auf Ihrem Server.
cd /var/www/nextcloud
sudo -E -u www-data php occ status
Vergewissern Sie sich, dass die Statusausgabe die erwartete installierte Instanz anzeigt. Wenn Sie für den Webserver eine andere PHP-Binärdatei als die Standard-PHP-Binärdatei der Shell verwenden php, verwenden Sie dieselbe kompatible PHP-Version occ. Die Ausführung occals HTTP-Benutzer trägt dazu bei, die erwarteten Dateibesitzverhältnisse und Berechtigungen beizubehalten.
Schritt 2: Vorschau der Indexänderungen
Sofern Ihre installierte Version dies unterstützt, führen Sie zunächst einen Testlauf durch:
sudo -E -u www-data php occ db:add-missing-indices --dry-run
Der Testlauf zeigt die SQL-Anweisungen in der Vorschau an, ohne sie anzuwenden. Lesen Sie die Ausgabe und prüfen Sie, ob sie die fehlenden Indizes betrifft, die Sie reparieren möchten. Falls die Ausgabe eine Ihnen unbekannte Tabelle oder einen unbekannten Index enthält, notieren Sie sich den genauen Namen und prüfen Sie, ob die entsprechende Anwendung installiert und aktuell ist. Fügen Sie die SQL-Anweisungen aus der Vorschau nicht als Abkürzung in die Datenbankkonsole ein.
Schritt 3: Fehlende Indizes hinzufügen
Wenn die Vorschau erwartet wird und die Sicherung bereit ist, führen Sie den dokumentierten Reparaturbefehl aus:
sudo -E -u www-data php occ db:add-missing-indices
Der Befehl prüft Datenbanktabellen und erstellt Indizes, die im Schema definiert, aber in der aktuellen Installation nicht vorhanden sind. Warten Sie, bis der Vorgang abgeschlossen ist. Bei großen Datenbanken kann dies einige Zeit dauern. Unterbrechen Sie den Vorgang nicht, während das Schema geändert wird. Laut Nextcloud-Dokumentation kann dieser Befehl ausgeführt werden, während die Instanz online bleibt; der Wartungsmodus ist für diese Reparatur nicht erforderlich. Befolgen Sie Ihren eigenen Änderungsmanagementprozess, falls ein Wartungsfenster erforderlich ist.
Docker und andere Installationstypen
Bei einer containerisierten Bereitstellung führen Sie die Anwendung occinnerhalb des Nextcloud-Anwendungscontainers und nicht im Datenbankcontainer aus. Container- und Dienstnamen variieren, überprüfen Sie daher Ihre Bereitstellung und ersetzen Sie den Namen durch den korrekten. Für einen Docker-Container mit dem Namen „<Docker-Containername>“ nextcloudlautet das Muster:
docker exec --user www-data nextcloud php occ db:add-missing-indices
Für Docker Compose lautet das entsprechende Muster docker compose exec -u www-data <nextcloud-service> php occ db:add-missing-indices. Einige Paketbereitstellungen verwenden einen speziellen Befehl oder einen anderen Containerbenutzer; befolgen Sie die Anweisungen für das jeweilige Paket. Kopieren Sie niemals einen Containernamen aus der Konfiguration einer anderen Person, ohne ihn vorher zu überprüfen.
Wenn der Befehl fehlschlägt oder die Warnung bestehen bleibt
- Zugriff verweigert: Überprüfen Sie den HTTP-Benutzer und den Installationspfad. Führen Sie den Befehl nicht als Root aus, es sei denn, Ihre Bereitstellungsdokumentation erfordert ausdrücklich einen privilegierten Wrapper; der PHP-Prozess sollte im Allgemeinen als Webserver-Benutzer ausgeführt werden.
- Datenbankverbindungs- oder PHP-Fehler: Überprüfen Sie das Nextcloud-Protokoll, den Zustand des Datenbankdienstes, die konfigurierte PHP-Version und die Befehlsausgabe. Beheben Sie das zugrunde liegende Verbindungs- oder Laufzeitproblem, bevor Sie den Schema-Befehl erneut ausführen.
- Fehler aufgrund doppelter Schlüssel oder fehlendem eindeutigen Index: Halten Sie den Vorgang an und notieren Sie sich den vollständigen Fehlertext. Dieser kann auf Konflikte zwischen Zeilen hinweisen, die die Erstellung eines eindeutigen Index verhindern. Identifizieren Sie die betroffene App und Tabelle, überprüfen Sie die App- und Nextcloud-Versionen und wenden Sie sich an den App-Entwickler oder einen mit der Datenbank vertrauten Administrator. Löschen Sie keine Zeilen oder Indizes ohne eine datenspezifische Diagnose und Datensicherung.
- „Befehl nicht gefunden“ oder nicht unterstützte Option: Stellen Sie sicher, dass Sie die richtige Nextcloud-Installation verwenden und überprüfen Sie die Einstellungen
php occ listals php occ help db:add-missing-indicesHTTP-Benutzer. Ältere Versionen bieten möglicherweise nicht alle neueren Optionen an. - Die Warnung „ Aktualisieren Sie die Administrationsübersicht nach erfolgreichem Abschluss des Befehls“ wird weiterhin angezeigt. Beachten Sie die genauen Index- und Tabellennamen der Warnung. Möglicherweise fehlen mehrere Indizes, es kann sich um einen neu eingeführten Index nach einem App-Update, einen fehlgeschlagenen Datenbankvorgang oder eine Schemaabweichung handeln, die dieser Befehl nicht beheben konnte.
Verwechseln Sie fehlende Indizes nicht mit fehlenden Spalten oder Primärschlüsseln. Nextcloud dokumentiert separate Befehle für diese Schemaänderungen, z. B. `setup_repair` db:add-missing-columnsund `setup_repair` db:add-missing-primary-keys. Führen Sie eine andere Reparatur nur dann durch, wenn die Administratorwarnung oder die versionsspezifische Dokumentation dies erfordert.
Ergebnis überprüfen
- Warten Sie, bis
db:add-missing-indicesdie Vorgänge beendet und die Meldungen abgeschlossen sind, z. B.Done. - Laden Sie die Administrationsübersicht neu und vergewissern Sie sich, dass die spezifische Warnung bezüglich des fehlenden Index verschwunden ist.
- Falls das Problem weiterhin besteht, vergleichen Sie die genauen Tabellen- und Indexnamen mit der Ausgabe des Befehls, anstatt ihn blind erneut auszuführen.
- Prüfen Sie das Nextcloud-Protokoll und den Datenbankstatus auf neue Fehler und vergewissern Sie sich anschließend, dass der normale Dateizugriff und die Anwendungen, die die betroffenen Tabellen verwenden, weiterhin funktionieren.
- Bewahren Sie die Sicherung so lange auf, bis die Instanz wieder normal funktioniert und Ihre Aufbewahrungsrichtlinie deren Löschung zulässt.
Die aktuelle Befehlssyntax finden Sie in der Nextcloud-Datenbank- und Indexbefehlsreferenz . Informationen zu Benutzer- und PHP-Anforderungen finden Sie unter „Verwendung des occ-Befehls“ und im Nextcloud-Backup-Leitfaden . Diese stabilen Seiten geben als aktuelles Handbuch Nextcloud Server 35 an (Stand: 6. Oktober 2026). Pfade, Optionen und Paketierungsanweisungen können in anderen Versionen oder Bereitstellungstypen abweichen.