Fehlermeldung "The database is missing some indexes..." geht nicht weg

  • Mein Problem:

    Nach dem Update führe ich normalerweise den Befehl occ db:add-missing-indices im Plesk-Panel als Cron-Job aus. Das hat immer funktioniert. Diesmal wird der Job auch ohne Fehler ausgeführt, aber die Fehlermeldung auf der Administrationsseite in meiner Nextcloud-Instanz bleibt weiterhin bestehen.


    Der Code, den ich versucht habe, um die Datenbank zu reparieren:


    cloud.domain.de/cron.php -- 'php' '-d' 'memory_limit=512M' 'occ db:add-missing-indices'

    cloud.domain.de/cron.php -- 'php' '-d' 'memory_limit=512M' 'db:add-missing-indices'


    Nextcloud Version: 29.0.4.1, frisch aktualisiert

    Betriebssystem und Version: Webhosting bei netcup

    Apache- oder nginx-Version: Apache, Version unbekannt

    PHP-Version: 8.3.8


    Hat das schonmal wer gesehen?

  • Also ich mache das immer so:

    Per SSH einloggen, in den Installationsordner navigieren und dann php occ db:add-missing-indices. Eventuell noch php durch die passende Version austauschen. Z.B. /usr/local/php83/bin/php

    RS Brezn | VPS 500 G8 Plus | 2× VPS Karneval 2020 | VPS Pocket Admin | RS Cyber Quack | VPS 500 ARM


    Dieses Gebäude hat mir die Vorfahrt genommen! *hup*

    Edited once, last by Virinum ().

  • Danke Virinum!


    mit SSH hab ich es auch schon probiert. wenn ich deine anleitung strickt befolge erhalte ich allerdings einige andere fehler:


    Zu diesen Fehlern habe ich bereits einiges recherchiert und ich glaube zu verstehen woran es liegt. Da ich mich nicht so gut auskenne, klappt die Lösungsumsetzung bei mir nicht so richtig. Allerdings habe ich die Meldung im Nextcloud Interface selbst nicht mehr.

    Durch 'php' '-d' 'memory_limit=512M' bekomme ich im plesk die Fehlermeldung zum Memory Limit nicht.

    Die Fehlermeldung zum data Verzeichnis hängt wohl mit unterschiedlichen Umgebungen zusammen. Auch diese Meldung sehe ich nicht mehr im Nextcloud Interface. Einige hatten hier eine änderung in der config vorgeschlagen, diese hatte ich auch erfolgreich umgesetzt: 'datadirectory' => ((php_sapi_name() != 'cli') ? '/var/www/vhosts/hosting000000.xxxxx.netcup.net' : '').'/cloud.domain.de/data',


    -- UPDATE:
    während ich diese Zeilen schreibe hab ich die config datei nochmal überprüft und diese Änderung zum "datadirectory" war dort nicht mehr drin. hatte ich wohl mal raus genommen wegen irgendwas. Die Änderung hab ich wieder reingenommen und dann via ssh nochmal folgendes ausgeführt:

    Code
    bash-5.0$ php occ db:add-missing-indices
    The current PHP memory limit is below the recommended value of 512MB.
    Adding additional dav_shares_resourceid_type index to the oc_dav_shares table, this can take some time...
    oc_dav_shares table updated successfully.
    Adding additional dav_shares_resourceid_access index to the oc_dav_shares table, this can take some time...
    oc_dav_shares table updated successfully.

    Somit wurden die fehldenen tabellen erfolgreich hinzugefügt.


    Wenn ich /usr/local/php83/bin/php -d memory_limit=512M -f occ db:add-missing-indices ausführe erhalte ich auch die php memory limit Warnung nicht mehr.

  • Ah stimmt, das hatte ich vergessen zu erwähnen.

    Die Änderung direkt in der config.php vorzunehmen bringt leider nur bis zum nächsten Update was. Denn dann wird die config.php wieder mit den aktuellen Werten überschrieben und die Sonderlösung fliegt somit wieder raus.


    Am besten legst du einfach eine zusätzliche Datei im config-Verzeichnis an. Am besten so: https://github.com/froonix/web…ud/config/data.config.php

    Die Lösung bleibt auch von einem Update unberührt.


    Das mit dem PHP memory limit ist nur eine Warnung und sollte beim Hinzufügen von Indices zu keinen Problemen führen. Deine Lösung mit der Erhöhung des Limits ist aber natürlich sauberer.

    RS Brezn | VPS 500 G8 Plus | 2× VPS Karneval 2020 | VPS Pocket Admin | RS Cyber Quack | VPS 500 ARM


    Dieses Gebäude hat mir die Vorfahrt genommen! *hup*

  • Ja, das hatte ich auch vorhin gefunden. :)


    dazu wäre meine Frage was heißen die Platzhalte und wie setze ich mein tatsächen Pfad dort ein:


    PHP
    <?php
    
    
    $CONFIG['datadirectory'] = realpath(__dir__ . '/../data');


    wäre im meinem fall dann so?


    PHP
    <?php
    
    
    $CONFIG['datadirectory'] = realpath(/var/www/vhosts/hostingxxxxxx.xxxxx.netcup.net . '/cloud.domain.de/data');


    - eben getestet. funktioniert nicht... weißt du wie es korrekt wäre?