Come appare il messaggio
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.Cause frequenti
- Aggiornamento a una nuova major che porta nuovi indici.
- Indici mai aggiunti dopo aggiornamenti precedenti.
- Migrazione da SQLite o import manuale del database senza schema completo.
Verifica
- Mostra gli indici mancanti senza modificare nulla
sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices --dry-run - Mostra colonne e chiavi primarie mancanti
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 - Trova le tabelle più grandi per stimare la durata
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;"
Soluzione
- Prima fai un backup del database.
- Su istanze grandi attiva la maintenance mode:
occ maintenance:mode --on. - Aggiungi gli indici:
occ db:add-missing-indices, poiocc db:add-missing-columnseocc db:add-missing-primary-keys. - Se segnalato, esegui anche
occ db:convert-filecache-bigint. - Disattiva la maintenance mode e ricarica la panoramica admin.
Domande frequenti
Quanto ci vuole?
Pochi secondi su istanze piccole. Con una oc_filecache da molti milioni di righe possono servire da minuti a ore, con la tabella bloccata nel frattempo.
Posso ignorare il messaggio?
Nextcloud continua a funzionare, ma elenchi file, condivisioni e ricerca rallentano man mano che crescono i dati. Conviene sistemarlo.