Nextcloud Logo

Nextcloud – Datenbank fehlen einige Indizes

In einem Testsystem läuft die freie Cloudlösung Nextcloud. In der Weboberfläche, als Admin angemeldet, wird in der Verwaltung, unter Übersicht, im Abschnitt Sicherheits- & Einrichtungswarnungen, folgender Fehler angezeigt:

In der Datenbank fehlen einige Indizes. Auf Grund der Tatsache, dass das Hinzufügen von Indizes in großen Tabellen einige Zeit in Anspruch nehmen kann, wurden diese nicht automatisch erzeugt. Durch das Ausführen von "occ db:add-missing-indices" können die fehlenden Indizes manuell hinzugefügt werden, während die Instanz weiter läuft. Nachdem die Indizes hinzugefügt wurden, sind Anfragen auf die Tabellen normalerweise schneller.
Fehlender Index "twofactor_providers_uid" in der Tabelle "oc_twofactor_providers".
Fehlender Index "version" in der Tabelle "oc_whats_new".
Fehlender Index "cards_abid" in der Tabelle "oc_cards".
Fehlender Index "cards_prop_abid" in der Tabelle "oc_cards_properties".

Hier noch eine ähnliche Meldung in Englisch für andere Tabellen – die Lösung ist nachfolgend die selbe:

Some indices are missing in the database. Because adding indexes to large tables may take some time, they have not been added automatically. By executing “occ db: add-missing-indices”, missing indexes can be added manually while the instance is running. Once the indexes have been added, queries to these tables are usually faster.
Missing index “share_with_index” in the “oc_share” table.
Missing index “parent_index” in the “oc_share” table.
Missing index “fs_mtime” in the “oc_filecache” table.

Das ist soweit auch kein Problem und kann wie folgt auf dem Server mit entsprechenden Berechtigungen korrigiert werden. In diesem Fall muss die Nextcloud-Command-Cli occ, verwendet und als User des Webservers ausgeführt werden.

# cd /var/www/<nextcloud-verzeichnis>/
# sudo -u www-data php occ db:add-missing-indices

Das hat bei mir nicht funktioniert, da das Testsystem wie bei vielen als Sharedhosting installiert ist. Entsprechend kann nicht der Webserver User verwendet werden, sondern der für die Webseite berechtigte. Welcher User verwendet werden muss ist einfach herauszufinden:

/var/www/<nextcloud-verzeichnis>/# ls -ahls occ 
4,0K -rw-r--r-- 1 web1 client1 283 Nov 19 15:21 occ

Hier gut zu sehen, dass der Benutzer für diese Webseite “web1” ist. Also muss der Befehl wie folgt geändert werden:

/var/www/<nextcloud-verzeichnis>/# sudo -u web1 php occ db:add-missing-indices
This version of Nextcloud requires at least PHP 7.1<br/>You are currently running 7.0.33-0+deb9u6. Please update your PHP version.

Und gleich das nächste Probleme. Auf dem Webserver ist als Stable-Version noch PHP 7.0.x installiert. Weiterhin sind aber auch PHP 7.2 und PHP 7.3 optional konfiguriert. OCC erkennt dies nicht. Nextcloud läuft jedoch unter PHP 7.3. und entsprechend ist der korrekte Befehl, mit richtigem Benutzer und PHP-Version, wie folgt:

/var/www/<nextcloud-verzeichnis>/# sudo -u web1 /opt/php-7.3/bin/php occ db:add-missing-indices

Check indices of the share table.
Check indices of the filecache table.
Check indices of the twofactor_providers table.
Adding additional twofactor_providers_uid index to the twofactor_providers table, this can take some time...
Twofactor_providers table updated successfully.
Check indices of the login_flow_v2 table.
Check indices of the whats_new table.
Adding version index to the whats_new table, this can take some time...
whats_new table updated successfully.
Check indices of the cards table.
Adding cards_abid index to the cards table, this can take some time...
cards table updated successfully.
Check indices of the cards_properties table.
Adding cards_prop_abid index to the cards_properties table, this can take some time...
cards_properties table updated successfully.

Have fun ..

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.