Se Nextcloud inizia a mostrare un'eccezione "Errore del database" dopo un aggiornamento, controlla l'errore del database sottostante nextcloud.logprima di modificare qualsiasi tabella. Ripristina prima la connettività del database; se l'aggiornamento si è interrotto a metà, completalo occ upgradee solo allora utilizza i comandi di ripristino documentati quando i log lo giustificano.
Identificare il guasto effettivo
Il messaggio del browser è un sintomo, non una diagnosi. Nextcloud potrebbe non essere in grado di raggiungere MySQL/MariaDB o PostgreSQL, l'account del database potrebbe non autenticarsi più oppure il codice e lo schema dell'applicazione potrebbero trovarsi in fasi di aggiornamento diverse. La guida ufficiale di Nextcloud per la risoluzione dei problemi consiglia di confrontare l'ID della richiesta non riuscita con il log del server.
- Registra l'ora, l'errore completo del browser e qualsiasi ID di richiesta visualizzato. Non pubblicare voci di registro private senza prima rimuovere segreti e informazioni personali.
- Trova la directory dei dati configurata in
config/config.php. Il file di log predefinito è data/nextcloud.log, ma le implementazioni personalizzate potrebbero registrare i log altrove.
- Su un'installazione Linux convenzionale, controlla le voci recenti e poi i log del servizio database. Sostituisci il percorso con quello effettivo di Nextcloud:
sudo tail -n 100 /var/www/nextcloud/data/nextcloud.log
sudo journalctl -u mariadb --since '30 minutes ago'
Il secondo comando si applica solo a un host che esegue MariaDB sotto systemd; per altre implementazioni, utilizzare i log del servizio PostgreSQL o del container. Cercare il codice dell'eccezione SQLSTATEe la prima causa correlata al database, anziché basarsi sull'ultima riga dello stack trace.
| Indizio del registro | Primo controllo utile |
SQLSTATE[HY000] [2002] | Processo del database, nome host, porta, percorso socket o accesso al file SQLite; l'interpretazione è determinata dal driver. |
SQLSTATE[HY000] [1040] | Esaurimento delle connessioni MySQL/MariaDB e sessioni attive. |
MySQL server has gone away | Riavvii del database, disconnessioni, pressione sulle risorse e log del server. |
| Autenticazione o accesso negato | Account del database, password, accesso alla rete e autorizzazioni. |
| Tabella, relazione o colonna mancante | Verificare se l'aggiornamento del database è stato completato con successo e se il codice installato corrisponde allo schema. |
I primi tre esempi sono descritti nella documentazione sugli errori comuni di Nextcloud. Un messaggio di tabella mancante non autorizza la creazione manuale della tabella: è necessario identificare prima l'errore specifico della migrazione.
Proteggi l'istanza prima di applicare una correzione
Prima di riprovare le migrazioni, conserva un backup del database ripristinabile insieme alla configurazione e ai dati di Nextcloud. La procedura di backup ufficiale include anche app e temi personalizzati, se presenti. Verifica che il backup si riferisca allo stesso momento; un backup del solo codice non può ripristinare un database parzialmente modificato.
- Se possibile, sospendi la sincronizzazione e i processi in background durante una finestra di ripristino, soprattutto quando sono coinvolte operazioni di scrittura o aggiornamento del database.
- Tieni traccia delle vecchie e delle nuove versioni di Nextcloud, del motore/versione del database, della versione di PHP e del metodo di aggiornamento.
- Non eliminare tabelle del database, non importare uno schema vuoto, non eseguire query SQL casuali trovate sui forum e non ripristinare ripetutamente un solo componente di un backup multi-parte.
I comandi seguenti presuppongono un'installazione standard di Debian/Ubuntu in /var/www/nextcloud, con www-datacome account del server web. Eseguire occcome utente HTTP appropriato; le installazioni di pacchetti, Docker, Snap, AIO e gestite hanno percorsi e metodi di esecuzione diversi. La documentazione di riferimento del comando occ spiega questi requisiti.
Ripristinare la connettività del database prima della migrazione.
Verifica le impostazioni del servizio di database e della connessione a Nextcloud.
Se i log mostrano un rifiuto della connessione, un socket irraggiungibile o un server non disponibile, verificare innanzitutto che il servizio di database esistente sia in esecuzione. Questi sono controlli alternativi a livello di host, non un elenco da eseguire indiscriminatamente:
sudo systemctl status mariadb
sudo systemctl status postgresql
Per un server di database separato, verificare anche DNS, regole del firewall, la porta selezionata e la raggiungibilità di rete dall'host o dal container dell'applicazione Nextcloud. Ispezionare config/config.php, dbtype, dbhost, dbnamee dbuser. Il riferimento ai parametri di configurazione spiega i nomi host, le porte e la sintassi dei socket Unix. Non incollare mai dbpasswordin ticket pubblici o comandi shell che lo espongano nella cronologia.
Se la password del database è stata ruotata o le credenziali sono state modificate durante la distribuzione, correggere l'incongruenza utilizzando il flusso di lavoro di gestione dei segreti. Se il server segnala troppe connessioni, esaminare le connessioni attive e la causa dell'accumulo di connessioni prima di considerare modifiche alla capacità. Un comando di indicizzazione non risolverà un'interruzione di connessione.
Verificare la compatibilità in fase di esecuzione dopo l'aggiornamento.
Un aggiornamento simultaneo di PHP o del server di database può compromettere un'installazione precedentemente funzionante. Confronta la versione di Nextcloud di destinazione con i requisiti di sistema ufficiali e le note di rilascio, anziché dare per scontato che ogni driver e versione del server attualmente installati siano ancora supportati. Secondo la documentazione di Nextcloud 35, sono supportate le versioni di PHP dalla 8.3 alla 8.5; le versioni del database accettate sono documentate separatamente. Le versioni precedenti presentano limiti diversi.
Verificate inoltre che il driver di database PHP richiesto dal motore selezionato sia abilitato sia nell'ambiente PHP da riga di comando che in quello web. Non effettuate il downgrade del server di database senza prima aver eseguito una migrazione dello schema: ripristinate il database solo da un piano di backup compatibile e coerente.
Completa o ripara l'aggiornamento di Nextcloud interrotto
Una volta che il database è raggiungibile e ne è stato creato un backup, passa alla directory di installazione di Nextcloud e verificane lo stato:
cd /var/www/nextcloud
sudo -E -u www-data php occ status
Se Nextcloud segnala che un aggiornamento è in sospeso o incompleto, segui il percorso di aggiornamento supportato per le versioni di origine e di destinazione installate. Per un'installazione manuale convenzionale, esegui:
sudo -E -u www-data php occ upgrade
Non interrompere il comando né eseguire processi di aggiornamento simultanei. Leggi l'output: una migrazione riuscita è diversa da un'eccezione di connessione al database. La documentazione di Nextcloud sull'aggiornamento manuale fornisce indicazioni esplicite su cosa fare occ upgradequando il processo basato sul web si blocca e maintenance:repairse il percorso di aggiornamento necessita di essere riparato:
sudo -E -u www-data php occ maintenance:repair
Da utilizzare maintenance:repairdopo aver analizzato l'errore; non sostituisce la correzione di credenziali errate, un database arrestato o un runtime effettivamente incompatibile. Se occ upgradel'errore si verifica durante una specifica migrazione SQL, salvare l'eccezione esatta e cercare una soluzione specifica per la versione o ripristinare il backup completo corrispondente, anziché tentare di eseguire operazioni DDL manuali.
Gestire gli avvisi dello schema solo dopo un aggiornamento riuscito.
Alcune migrazioni vengono intenzionalmente posticipate. Su un'istanza funzionante, la panoramica amministrativa potrebbe richiedere colonne, indici o chiavi primarie facoltative. Questi comandi forniscono un'anteprima di prova, se supportati da quella versione:
sudo -E -u www-data php occ db:add-missing-indices --dry-run
sudo -E -u www-data php occ db:add-missing-columns --dry-run
sudo -E -u www-data php occ db:add-missing-primary-keys --dry-run
Eseguire il comando corrispondente --dry-runsolo se il problema registrato o il controllo amministrativo lo richiedono e la modifica proposta è stata esaminata. Queste operazioni di manutenzione possono richiedere tempo su database di grandi dimensioni. Nextcloud 35 documenta inoltre db:schema:check; non dare per scontato che esista su versioni precedenti. Consultare il riferimento ai comandi del database per il comportamento specifico della versione.
Verifica il ripristino e riapri l'accesso
- Ripeti
sudo -E -u www-data php occ status. Verifica che la versione installata corrisponda alla release prevista, che non sia necessario alcun aggiornamento e che non venga generata alcuna nuova eccezione SQL irreversibile.
- Se la modalità di manutenzione è ancora attiva e l'aggiornamento è stato completato correttamente , disattivarla con
sudo -E -u www-data php occ maintenance:mode --off.
- Apri l'interfaccia WebGUI, accedi, elenca i file ed esegui un piccolo caricamento e download autorizzato.
nextcloud.logDurante questi controlli, verifica la presenza di nuove eccezioni nel database.
- Riprendi le attività pianificate e la sincronizzazione dei client, quindi controlla le impostazioni di amministrazione per eventuali avvisi rimanenti del database.
Se si verifica nuovamente la stessa eccezione del database, interrompere le migrazioni ripetute e raccogliere l'ID della richiesta, il testo SQLSTATE, il log del server di database, la coppia di versioni e l' occoutput dell'errore. Queste informazioni permettono di determinare se il problema rimanente è dovuto a problemi di connettività, software incompatibile o una specifica migrazione non riuscita. Un accesso riuscito da solo non è sufficiente a dimostrare che tutte le attività in background e le query del database funzionino correttamente.