Errore del database di Nextcloud dopo un aggiornamento: cosa controllare per prima cosa

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.

  1. 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.
  2. 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.
  3. 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 registroPrimo 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 awayRiavvii del database, disconnessioni, pressione sulle risorse e log del server.
Autenticazione o accesso negatoAccount del database, password, accesso alla rete e autorizzazioni.
Tabella, relazione o colonna mancanteVerificare 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

  1. 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.
  2. 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.
  3. 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.
  4. 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.

Lascia un commento

Spostare i dati di Nextcloud su un'unità esterna senza interrompere lo storage

Spostare i dati di Nextcloud su un'unità esterna senza interrompere lo storage

Spostare in modo sicuro una directory di dati Nextcloud su Linux verso un'unità esterna utilizzando un mount UUID persistente, la modalità di manutenzione, una copia verificata e il collegamento simbolico del percorso originale.

Errore del database di Nextcloud dopo un aggiornamento: cosa controllare per prima cosa

Ripristina l'accesso a Nextcloud dopo un aggiornamento diagnosticando gli errori SQL, verificando la connettività del database e completando in sicurezza le migrazioni interrotte.

Reimpostare una password di amministratore Nextcloud persa con OCC

Utilizza il comando OCC di Nextcloud per reimpostare la password di un amministratore dalla shell del server, con indicazioni per nomi utente, autorizzazioni e provider di accesso esterni.

Aggiungere l'intestazione HSTS all'endpoint HTTPS che serve Nextcloud

Elimina l'avviso HSTS di Nextcloud impostando l'intestazione su Apache, NGINX o sul tuo proxy TLS, quindi verifica in modo sicuro la risposta HTTPS pubblica.

Risoluzione dei problemi relativi all'installazione dell'app Nextcloud che segnala l'assenza di connessione a Internet.

Risoluzione dei problemi relativi all'installazione dell'app Nextcloud che segnala l'assenza di connessione a Internet.

Individuare le cause degli errori di installazione dell'App Store riconducibili a problemi di DNS, HTTPS, proxy, TLS o di configurazione del server Nextcloud stesso.

Gestisci i picchi di utilizzo della CPU nell'anteprima di Nextcloud con una coda pianificata.

Sposta il lavoro sulle miniature in una pianificazione in background controllata, ridimensiona le anteprime non utilizzate e verifica la coda senza sovraccaricare il server Nextcloud.

Ottieni la sincronizzazione desktop di Nextcloud: oltre la fase di "Elaborazione file"

Individua il file, la regola di esclusione, il problema di connessione o lo stato del database del client che blocca la sincronizzazione di Nextcloud, quindi verifica che i caricamenti e i download avvengano in sicurezza.

Elimina l'avviso di Nextcloud OPcache regolando il limite corretto

Individua il limite di PHP OPcache che causa l'avviso di Nextcloud, aggiorna la configurazione PHP web corretta, riavvia in modo sicuro e verifica il risultato.

Connettere Nextcloud a CODE Docker: configurazione e compromessi

Connettere Nextcloud a CODE Docker: configurazione e compromessi

Confronta il codice integrato e quello basato su Docker, quindi connetti Collabora Online a Nextcloud tramite un proxy inverso HTTPS sicuro.

Crea un cluster Nextcloud resiliente con Galera

Pianifica un'implementazione HA affidabile di Nextcloud con storage condiviso, blocco Redis, routing MariaDB con supporto al quorum e controlli di failover pratici.