Home
» Come fare
»
Risolvi l'avviso di Nextcloud relativo agli indici del database mancanti.
Risolvi l'avviso di Nextcloud relativo agli indici del database mancanti.
Elimina l'avviso di Nextcloud "Database con indici mancanti" eseguendo il comando occ db:add-missing-indicescome utente del server web dall'installazione corretta di Nextcloud. Il comando aggiunge gli indici definiti da Nextcloud o dalle app installate ma mancanti nel database; nella documentazione di Nextcloud 35, --dry-runviene visualizzata un'anteprima del codice SQL prima dell'esecuzione.
L'avviso viene visualizzato nella Panoramica di amministrazione quando Nextcloud rileva indici mancanti nello schema del database.
Cosa significa l'avvertimento
Un indice di database è una struttura di ricerca che aiuta il database a trovare le righe senza dover scansionare l'intera tabella. Nextcloud e le sue app a volte aggiungono indici per migliorare le query. Un aggiornamento potrebbe lasciare questo compito all'amministratore, poiché la creazione di un indice su una tabella di grandi dimensioni può richiedere tempo e influire sulle prestazioni durante l'esecuzione. L'avviso di indice mancante è solitamente un promemoria di manutenzione, non la prova che i file o i record del database siano danneggiati.
La documentazione attuale sui comandi del database di Nextcloud descrive db:add-missing-indicesl'aggiunta di indici presenti nello schema previsto ma assenti nell'installazione corrente. Il manuale documenta anche --dry-runl'anteprima delle istruzioni SQL. Gli indici esatti dipendono dalla versione di Nextcloud e dalle app installate.
Prepara il server
Verifica quale istanza di Nextcloud mostra l'avviso, soprattutto se gestisci ambienti di staging e produzione o più di un container.
Assicurati che esista un backup recente del database e che tu sappia come ripristinarlo. Questo comando modifica la struttura del database. Non modificare o eliminare manualmente gli indici come alternativa.
Si consiglia di eseguire il comando quando il carico del database è gestibile. Il server può rimanere online durante questa operazione, secondo le linee guida di aggiornamento di Nextcloud, ma l'indicizzazione di una tabella di grandi dimensioni può richiedere tempo e influire temporaneamente sulla velocità di risposta.
Individua la directory di installazione di Nextcloud, la versione di PHP CLI utilizzata dal server web e l'account del sistema operativo del server web. L'account è spesso presente www-datasu Debian o Ubuntu, apachesu Fedora o CentOS e httpsu Arch Linux.
La guida OCC di Nextcloud spiega che occsi tratta dell'interfaccia a riga di comando del server e deve essere eseguita come utente HTTP affinché la proprietà e i permessi dei file rimangano invariati. Non utilizzarla www-dataindiscriminatamente se la tua installazione utilizza un account diverso.
Visualizza in anteprima e aggiungi gli indici mancanti
Per un'installazione standard da archivio su Debian o Ubuntu, apri una shell sul server Nextcloud e spostati nella directory contenente il occfile. Questo esempio utilizza /var/www/nextcloud; il tuo percorso potrebbe essere diverso.
cd /var/www/nextcloud
sudo -E -u www-data php occ db:add-missing-indices --dry-run
La simulazione stampa il codice SQL che verrebbe eseguito senza modificare il database. Leggi l'output e verifica che corrisponda all'operazione di manutenzione prevista. L' --dry-runopzione è documentata nel manuale corrente di Nextcloud 35; se una versione precedente non la supporta, consulta la guida ai comandi di quella versione anziché rimuovere le opzioni a caso.
Utilizza l'opzione di simulazione documentata per esaminare il codice SQL prima di apportare modifiche al database.
Quando sei pronto ad applicare la modifica, esegui il comando senza --dry-run:
Nextcloud controlla le tabelle pertinenti e segnala l'avanzamento. Lascia che il processo termini; non interromperlo solo perché una tabella di grandi dimensioni richiede più tempo del previsto. Il manuale di aggiornamento elenca questo comando tra le attività di schema più lunghe che possono essere eseguite mentre l'istanza rimane online, quindi normalmente non è necessario abilitare la modalità di manutenzione per questa riparazione. Evita di eseguire contemporaneamente operazioni di manutenzione del database mentre sono in corso.
Il comando controlla le tabelle del database e ritorna alla shell al termine dell'operazione.
Se Nextcloud viene eseguito in Docker
Eseguire il comando occnel container dell'applicazione Nextcloud, non nel container del database separato. Per un container denominato nextcloudcon l' www-dataaccount standard, il comando è generalmente il seguente:
Sostituisci nextcloudcon il nome effettivo del contenitore della tua applicazione. Se l'immagine o la distribuzione utilizza un utente del contenitore, un binario PHP o un wrapper di comandi diverso, segui la documentazione di tale immagine e mantieni il comando in esecuzione come utente HTTP.
Verifica che l'avviso sia scomparso.
Al termine del comando, aggiorna le impostazioni di amministrazione > Panoramica . Il messaggio relativo agli indici mancanti dovrebbe scomparire non appena il controllo di Nextcloud li riconosce. Puoi anche rieseguire il comando; dovrebbe terminare senza che sia necessario aggiungere nuovamente gli stessi indici mancanti. Questo conferma che il controllo dello schema è stato aggiornato, sebbene non misuri le prestazioni complessive del database.
Aggiorna la Panoramica di amministrazione al termine del comando e verifica se l'avviso del database è scomparso.
Se l'avvertimento persiste
Verifica di aver eseguito il comando sulla stessa installazione di Nextcloud e sullo stesso database che hanno generato l'avviso. Un errore comune è quello di eseguirlo in un container di manutenzione, in un'istanza di staging o in un container di database.
Verifica che il comando sia stato eseguito con l'utente corretto del server web e che utilizzi la stessa versione di PHP del server web. Nextcloud segnala che una configurazione diversa di PHP tramite CLI può causare occerrori.
Su Nextcloud 35 e versioni successive, eseguire il comando sudo -E -u www-data php occ db:schema:checkper verificare le differenze di schema. La documentazione attuale indica che questo controllo è stato aggiunto nella versione 35. Nelle versioni precedenti, utilizzare gli strumenti di diagnostica documentati per quella specifica versione.
Se l'indice mancante appartiene a un'app di terze parti o il comando segnala un errore, aggiorna l'app se è disponibile un aggiornamento, esamina il log di Nextcloud e l'output del comando e chiedi al manutentore dell'app o all'assistenza di Nextcloud i nomi esatti dell'indice e della tabella. Non eseguire CREATE INDEXistruzioni scritte manualmente a meno che il manutentore dell'app o del database non le fornisca per il tuo schema specifico.
Per un server di produzione, conservare il backup del database fino a quando l'avviso non viene rimosso e l'applicazione non funziona normalmente. La guida all'aggiornamento di Nextcloud illustra l'attività di manutenzione online e la prova a secco facoltativa.