So sieht die Meldung aus
The database is missing some indexes. Due to the fact that adding indexes on big tables could take some time they were not added automatically.Häufige Ursachen
- Update auf eine neue Hauptversion, die neue Indizes mitbringt.
- Indizes wurden bei früheren Updates nie nachgezogen.
- Migration von SQLite oder ein manueller Datenbank-Import ohne vollständiges Schema.
Prüfen
- Fehlende Indizes anzeigen, ohne etwas zu ändern
sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices --dry-run - Fehlende Spalten und Primärschlüssel anzeigen
sudo -u www-data php /var/www/nextcloud/occ db:add-missing-columns --dry-run; sudo -u www-data php /var/www/nextcloud/occ db:add-missing-primary-keys --dry-run - Größte Tabellen ermitteln, um die Dauer abzuschätzen
mysql -e "SELECT table_name, ROUND((data_length+index_length)/1024/1024) AS mb FROM information_schema.tables WHERE table_schema='nextcloud' ORDER BY mb DESC LIMIT 5;"
Lösung
- Vorher ein Datenbank-Backup erstellen.
- Bei großen Instanzen Wartungsmodus aktivieren:
occ maintenance:mode --on. - Indizes anlegen:
occ db:add-missing-indices, danachocc db:add-missing-columnsundocc db:add-missing-primary-keys. - Wenn gemeldet, auch
occ db:convert-filecache-bigintausführen. - Wartungsmodus beenden und die Admin-Übersicht neu laden.
Häufige Fragen
Wie lange dauert das?
Bei kleinen Instanzen Sekunden. Bei einer oc_filecache mit vielen Millionen Zeilen kann es Minuten bis Stunden dauern und die Tabelle in dieser Zeit sperren.
Kann ich die Meldung einfach ignorieren?
Nextcloud läuft weiter, aber Dateilisten, Freigaben und Suche werden mit wachsender Datenmenge spürbar langsamer. Nachziehen lohnt sich.