Datenbank-Indizies-Fehler ohne SSH-Zugriff korrigieren

Hallo zusammen

Ich habe auf einem Shared-Hosting die Nextcloud von 14.0.3 auf 14.0.4 aktualisiert und nun den folgenden Datenbank-Indizies-Fehler bekommen:

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 wird, 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 “fs_mtime” in der Tabelle “oc_filecache”.

Ich habe schon versucht die Lösung per SSH-Zugriff durchzuführen, habe aber nicht genug Rechte und Befehle seitens Hoster zur Verfügung, um dies so zu bereinigen.

Hat man allenfalls auch die Möglichkeit diesen Fehler direkt via Datenbank bereinigen kann oder in den Files selbst?

Danke euch für eure Unterstützung.

eine lösung: How can I run run occ db:add-missing-indices on shared hosting

Hallo Reiner,

danke dir für diese Lösung.
Hab sie probiert, leider erkennt das die Nextcloud nicht dies.
Hat Nextcloud allenfalls noch Probleme mit dem PHP 7.2 und der Erkennung der einzelnen PHP-Direktiven?
Hab auch das Problem das der OPCache nicht erkannt wird (ist komplett alles aktiviert).

Hab den folgenden Befehl ausgeführt:
/opt/php72/bin/php -d memory_limit=1G /[Pfad zur Cloud]/ occ db:add-missing-indices

Hier weitere zur Nextcloud und Server:
Version Nextcloud: 14.0.4
Server: Plesk 17.8.11
Verwendete PHP-Version: 7.2

Hat jemand noch ne Idee, wo das Problem liegen könnte?

Hallo miteinander - ich sitze jetzt auch in diesem Problem-Boot

Allerdings habe ich weder einen SSH Zugriff, noch die Möglichkeit
einen CronJob laufen lassen zu können.
Zudem sind meine Kenntnisse diesbezüglich nicht wirklich brauchbar.

Da in den Fehlerhinweisen von “großen Tabellen” die Rede ist stellt sich mir die Frage,
ob es für kleine Projekte wie meine überschaubare Familien-Cloud mit 4 Usern evt. eine
Variante über die Weboberfläche gibt?
Oder kann ich diese Idizes selber irgendwie in die Datenbank eintragen?

Wenn es hier keine Alternative gibt würde Nextcloud damit den kleinen privat-User irgendwie ausschließen. Das wäre echt schade.

Scheinbar gibt es für uns “Normal-User” wirklich keine Lösung für dieses Datenbankproblem?! :disappointed_relieved:

Und wenn ich mir ähnliche Forenbeiträge so ansehe sind die Macher der Nextcloud wohl allen ernstes der Meinung, dass man (ich) in der Lage sein muss, einen SSH-Account zu haben und diesen auch zu händeln.

Fraglich, ob sich damit die Akzeptanz für die schöne Idee einer eigenen Cloud weiterhin in die Breite tragen läßt. :thinking:

Beim Support meines Providers bin ich im übrigen ebenfalls abgeblitzt und wenn ich über die einschlägigen Foren keine machbare Lösung für mich finde bin damit auf mich alleine gestellt.

Es scheint hier muss ein Script dazu aufgesetzt für dieses Problem.
Da muss man mal nen Issue machen auf GitHub, damit dies entsprechend aufgebaut wird.

ist leider so, ich lasse die Meldungen inzwischen wo sie sind, ist einfach schade, aber nicht zu ändern. Für “Normal-User” gibt es an mehrere Stellen leider keine Lösung ausser zu warten ob es mit einer nächsten Version geht.

1 Like

Hallo,

ich lege die Indizies in der Datenbank (über phpMyAdmin / mySqlAdmin) selbst an. Das geht relativ simpel und funktioniert einwandfrei. SSH habe ich nicht und der Cronjob ging auch nicht. Somit die einzige Lösung nach einem Update.

Wenns euch genauer interessiert, kann ich die Schritte gerne genauer erläutern :slight_smile:

Gruß
An Dy

Hallo An_Dy,

ja gerne, ich habe immer noch die Problematik nicht gelöst.
Kannst du uns die Schritte beschreiben?

Gruss
developics

1 Like

Das würde mich auch sehr interessieren. Wenn ich dazu keine gute Lösung finde, dann muss ich mich wohl von dem Projekt der Selbstadministration verabschieden.

1 Like

Hallo,

benötigt wird der Zugriff auf die Datenbank selbst. Im Regelfall über domain.de/mysqladmin bzw. über euren Hoster (all-inkl.com, etc…) im Kundencenter. Dort loggt ihr euch mit euren Zugangsdaten ein.
Nun schaut ihr in Nextcloud unter “Einstellungen → Übersicht” welche Tabelle betroffen ist.
Beispiel:

Fehlender Index “twofactor_providers_uid” in der Tabelle “f8aeE_twofactor_providers”.

Nun sucht ihre diese Tabelle in eurer Datenbank und öffnet diese durch einen Klick. Anschließend auf “Struktur” (orangener Kreis).

Ihr klickt nun auf “OK” (grüner Kreis) und gebt den Indexname aus der Nextcloud-Meldung in das erste Feld ein und wählt im zweiten Feld “INDEX” aus (rot unterstrichen). Anschließend wieder auf “OK” (roter Kreis).
Danach wieder in die Übersicht der Datenbank zurück und mit den anderen Meldungen exakt so fortführen. Nun sollte diese “Warnung” aus Nextcloud verschwinden.

Ich hatte damit bislang immer Erfolg. Muss leider nach jedem Update durchgeführt werden, wenn Indizies fehlen.

3 Likes

Hallo An_Dy,

super danke dir, es hat geklappt.

Gruss
developics

1 Like

Habe eine Instanz bei pixelx, nach dem Update zu Version 20 gibt es ein paar Meldungen zur Aktualisierung der Datenbank.
Das Thema kommt in der Anleitung etwas zu Kurz:
https://www.pixelx.de/hilfe/thema-nextcloud-update.html

Alle Lösungen, die ich hier gesehen habe stehen habe per phpMyAdmin und Cron Job, stehen mir auf der NextCloud Admin Seite ja nicht zur Verfügung. :pensive:

Hallo Andre

Da gibts seitens nextcloud selbst keine andere Möglichkeit diese Fehler zu bereinigen.

Du müsstest daher pixelx bitten diese Meldungen zu bereinigen. Umgehen kann man dies nicht anderst

Herzlichen Dank für diese Anleitung! Hat auch im Februar 2022 mit Nextcloud 22.2.3. bei All-Inkl einwandfrei funktioniert.

Hi,
Danke für die Anleitung. Ich habe auf unserer Cloud beim Webhoster auch das Problem nach de Update auf 22.2.5. Leider habe ich aktuell keinen user/root Zugang zum Server. phpMyAdmin geht aber. Wie wähle ich die richtige Spalte für den Index aus?
Aktuell fehlt z.B. “fs_storage_path_prefix” in der Tabelle “xxx_file_cache” . Es gibt die Spalten “storage” und “path” (und einige mehr) die in Frage kämen?

Weitere Frage : Wie riskant ist das Ganze? Ich habe das alles erst eingerichtet, und würde das ungern zerschießen. Wie ich ein gesamtes Backup machen kann erschließt sich mir auch noch nicht ganz (inkl. Datenbank).

Vielen Dank
//hufnala

Vielleicht kannst du einen eigenen Thread eröffnen, deine genauen Details (Fehlermeldungen) dort posten und gerne auf diesen Thread verlinken. Dann kann dir vielleicht besser geholfen werden.

Riskant ist das ganze gar nicht. Du solltest grundsätzlich - wenn du eine “wichtige” Nextcloud betreibst - wissen wie man ein Backup macht und ein Restore einspielt. Vorher einfach die ganze Datenbank sichern und im Fehlerfall wieder einspielen.

Unter Umständen ist es sinnvoller eine Managed Nextcloud zu verwenden. Ich weiß ja nicht welchen Webhoster du verwendest und ob eine Managed Nextcloud eine Option ist. Aber für wenige Euro und teilweise umsonst bekommst du einen Account von z. B. einigen GB. Wie sind deine genauen Ansprüche? Dann sparst du dir auch diesen Ärger. Ich kann nur davon abraten auf einen Webspace Nextcloud zu betreiben und das ohne Kommandozeile.

Hallo allerseits,

auch ich habe das Problem, konnte aber bis auf einen Index alles via phpMyAdmin lösen.

Bei der Meldung Fehlender Index “fs_storage_path_prefix” in der Tabelle “oc_filecache”. habe ich mir aus der Datei /core/Command/Db/AddMissingIndices.php den entsprechenden Befehl rausgesucht:
AddIndex([‘storage’, ‘path’], ‘fs_storage_path_prefix’, , [‘lengths’ => [null, 64]]); und anhand dessen versucht den Index aufzubauen.

Leider bringt mir phpMyAdmin dabei die Meldung: Schlüssel ist zu lang. Die maximale Schlüssellänge beträgt 3072

2023-01-18_084653

storage ist biging(20) und path ist varchar(4000)

Weiß jemand wie die korrekte Syntax für diesen Index lautet?

Danke schon mal für etwaiige Rückmeldungen.