Erreur de base de données Nextcloud après une mise à jour : que vérifier en premier ?

Si Nextcloud affiche une exception « Erreur de base de données » après une mise à jour, vérifiez l'erreur sous-jacente nextcloud.logavant de modifier les tables. Rétablissez d'abord la connectivité à la base de données ; si la mise à jour s'est interrompue, terminez-la occ upgradeet n'utilisez les commandes de réparation documentées que lorsque les journaux le justifient.

Identifier la défaillance réelle

Le message du navigateur indique un symptôme, et non un diagnostic. Nextcloud peut rencontrer des difficultés pour accéder à MySQL/MariaDB ou PostgreSQL, le compte de base de données peut ne plus être authentifié, ou encore le code et le schéma de l'application peuvent présenter des niveaux de mise à jour différents. La documentation officielle de dépannage de Nextcloud recommande de comparer l'identifiant de la requête ayant échoué avec celui du journal du serveur.

  1. Consignez l'heure, l'erreur complète du navigateur et tout identifiant de requête affiché. Ne publiez pas les entrées de journal privées sans supprimer les informations confidentielles et personnelles.
  2. Recherchez le répertoire de données configuré dans config/config.php. Le fichier journal par défaut est data/nextcloud.log, mais les déploiements personnalisés peuvent consigner les données ailleurs.
  3. Sur une installation Linux classique, consultez les entrées récentes puis les journaux du service de base de données. Remplacez le chemin d'accès à Nextcloud par le vôtre :
sudo tail -n 100 /var/www/nextcloud/data/nextcloud.log
sudo journalctl -u mariadb --since '30 minutes ago'

La seconde commande s'applique uniquement aux hôtes exécutant MariaDB sous systemd ; pour les autres déploiements, utilisez les journaux du service PostgreSQL ou du conteneur. Recherchez le SQLSTATEcode de l'exception et la première cause liée à la base de données plutôt que de vous fier à la dernière ligne de la trace de pile.

Indice de journalisationPremier contrôle utile
SQLSTATE[HY000] [2002]Processus de base de données, nom d'hôte, port, chemin du socket ou accès au fichier SQLite ; l'interprétation est déterminée par le pilote.
SQLSTATE[HY000] [1040]Épuisement des connexions MySQL/MariaDB et sessions actives.
MySQL server has gone awayRedémarrages de bases de données, déconnexions, pression sur les ressources et journaux du serveur.
Authentification ou accès refuséCompte de base de données, mot de passe, accès réseau et autorisations.
Table, relation ou colonne manquanteVérifier si la mise à niveau de la base de données est terminée et si le code installé correspond à son schéma.

Les trois premiers exemples sont traités dans la documentation des erreurs courantes de Nextcloud. Un message d'erreur indiquant l'absence d'une table ne signifie pas que vous pouvez la créer manuellement : identifiez d'abord la cause exacte de l'échec de la migration.

Protégez l'instance avant d'appliquer un correctif

Avant de tenter une nouvelle migration, conservez une sauvegarde de votre base de données, incluant la configuration et les données de Nextcloud. La procédure de sauvegarde officielle inclut également les applications et thèmes personnalisés, le cas échéant. Assurez-vous que la sauvegarde corresponde à un point précis dans le temps ; une sauvegarde contenant uniquement le code ne peut pas récupérer une base de données partiellement modifiée.

  • Suspendez la synchronisation et les tâches en arrière-plan pendant une fenêtre de récupération lorsque cela est possible, en particulier lorsque des écritures ou des mises à niveau de la base de données sont impliquées.
  • Conservez une trace des anciennes et nouvelles versions de Nextcloud, du moteur/version de la base de données, de la version de PHP et de la méthode de mise à jour.
  • Ne supprimez pas les tables de la base de données, n'importez pas un schéma vide, n'exécutez pas de requêtes SQL aléatoires provenant de forums, et ne restaurez pas à plusieurs reprises un seul composant d'une sauvegarde en plusieurs parties.

Les commandes ci-dessous supposent une installation Debian/Ubuntu standard /var/www/nextcloud, avec www-datacomme compte serveur web. Exécutez-les occen tant qu'utilisateur HTTP approprié ; les installations par paquet, Docker, Snap, AIO et les installations gérées ont des chemins et des méthodes d'exécution différents. La documentation de la commande occ explique ces exigences.

Rétablir la connectivité de la base de données avant la migration

Vérifiez les paramètres de connexion au service de base de données et à Nextcloud

Si les journaux indiquent un refus de connexion, une socket inaccessible ou un serveur indisponible, vérifiez d'abord que le service de base de données existant est en cours d'exécution. Voici des vérifications alternatives au niveau de l'hôte, et non une liste à exécuter sans discernement :

sudo systemctl status mariadb
sudo systemctl status postgresql

Pour un serveur de base de données distinct, vérifiez également le DNS, les règles de pare-feu, le port sélectionné et l'accessibilité réseau depuis l'hôte ou le conteneur de l'application Nextcloud. Examinez les config/config.phpparamètres suivants : dbtype` hostname` dbhost, dbname` port` et `socket` dbuser. La documentation relative aux paramètres de configuration explique les noms d'hôtes, les ports et la syntaxe des sockets Unix. Ne copiez jamais ces informations dbpassworddans des tickets publics ou des commandes shell qui les exposeraient dans l'historique.

Si le mot de passe de la base de données a été modifié ou si des identifiants ont été changés pendant le déploiement, corrigez cette incohérence conformément à votre procédure de gestion des secrets. Si le serveur signale un nombre excessif de connexions, examinez les connexions actives et la cause de cette accumulation avant d'envisager des modifications de capacité. Une commande d'indexation ne résoudra pas une interruption de connexion.

Vérifiez la compatibilité d'exécution après la mise à jour.

Une mise à jour simultanée de PHP ou du serveur de base de données peut rendre inutilisable une installation fonctionnelle. Comparez la version cible de Nextcloud avec sa configuration système requise et ses notes de version officielles plutôt que de supposer que toutes les versions de pilotes et de serveurs actuellement installées restent compatibles. D'après la documentation de Nextcloud 35 consultée, PHP 8.3 à 8.5 est pris en charge ; les versions de base de données compatibles sont documentées séparément. Les versions antérieures ont des limitations différentes.

Vérifiez également que le pilote de base de données PHP requis par le moteur sélectionné est activé dans les environnements PHP en ligne de commande et web. Après une migration de schéma, ne revenez pas à une version antérieure du serveur de base de données : restaurez-la uniquement à partir d’une sauvegarde compatible et cohérente.

Terminez ou réparez la mise à niveau interrompue de Nextcloud

Une fois la base de données accessible et une sauvegarde effectuée, accédez au répertoire d'installation de Nextcloud et vérifiez son état :

cd /var/www/nextcloud
sudo -E -u www-data php occ status

Si Nextcloud signale qu'une mise à niveau est en attente ou incomplète, suivez la procédure de mise à niveau recommandée pour les versions source et cible installées. Pour une installation manuelle classique, exécutez :

sudo -E -u www-data php occ upgrade

N’interrompez pas la commande et n’exécutez aucun processus de mise à niveau simultané. Consultez la sortie : une migration réussie est différente d’une exception de connexion à la base de données. La documentation de mise à niveau manuelle de Nextcloud fournit des recommandations explicites occ upgradeen cas de blocage du processus web et maintenance:repairsi le chemin de mise à niveau nécessite une réparation.

sudo -E -u www-data php occ maintenance:repair

À utiliser maintenance:repairaprès analyse de l'échec ; cette méthode ne remplace pas la correction d'identifiants incorrects, d'une base de données arrêtée ou d'une incompatibilité d'exécution. En cas occ upgraded'échec lors d'une migration SQL spécifique, enregistrez l'exception exacte et recherchez une solution adaptée à la version ou restaurez la sauvegarde correspondante complète plutôt que d'expérimenter avec le DDL manuel.

Ne traitez les avertissements de schéma qu'après une mise à niveau réussie.

Certaines migrations sont volontairement différées. Sur une instance fonctionnelle, l'interface d'administration peut demander des colonnes, des index ou des clés primaires optionnels. Ces commandes permettent d'effectuer une simulation (simulation) lorsque la version le prend en charge :

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

N'exécutez la commande correspondante --dry-runque si le problème consigné ou la vérification administrative l'exige et que la modification proposée a été validée. Ces opérations de maintenance peuvent être longues sur les bases de données volumineuses. Nextcloud 35 fournit des informations supplémentaires à ce sujetdb:schema:check ; ne présumez pas que cette fonctionnalité est disponible sur les versions antérieures. Consultez la documentation de référence des commandes de la base de données pour connaître le comportement spécifique à chaque version.

Vérifier la récupération et rouvrir l'accès

  1. Répétez l'opération sudo -E -u www-data php occ status. Vérifiez que la version installée correspond à la version prévue, qu'aucune mise à niveau n'est requise et qu'aucune nouvelle exception SQL fatale n'est produite.
  2. Si le mode maintenance est toujours activé et que la mise à niveau s'est terminée avec succès , désactivez-le avec sudo -E -u www-data php occ maintenance:mode --off.
  3. Ouvrez l'interface Web, connectez-vous, listez les fichiers et effectuez un petit chargement et un téléchargement autorisés. Surveillez nextcloud.logl'apparition de nouvelles exceptions dans la base de données pendant ces opérations.
  4. Reprenez les tâches planifiées et la synchronisation des clients, puis vérifiez les paramètres d'administration pour détecter d'éventuels avertissements de base de données restants.

Si la même exception de base de données se reproduit, interrompez les migrations en cours et collectez l'ID de la requête, le texte SQLSTATE, le journal du serveur de base de données, la paire de versions et le occrésultat de l'erreur. Ces informations permettront de déterminer si le problème persiste en raison d'un souci de connectivité, d'une incompatibilité logicielle ou d'une migration ayant échoué. Une connexion réussie ne garantit pas à elle seule le bon fonctionnement de toutes les tâches en arrière-plan et requêtes de base de données.

Laisser un commentaire

Erreur de base de données Nextcloud après une mise à jour : que vérifier en premier ?

Rétablissez l'accès à Nextcloud après une mise à jour en diagnostiquant les erreurs SQL, en vérifiant la connectivité de la base de données et en terminant en toute sécurité les migrations interrompues.

Réinitialisez un mot de passe d'administrateur Nextcloud perdu avec OCC

Utilisez la commande OCC de Nextcloud pour réinitialiser un mot de passe administrateur depuis l'interface de ligne de commande du serveur, avec des instructions concernant les noms d'utilisateur, les permissions et les fournisseurs d'authentification externes.

Ajoutez l'en-tête HSTS au point de terminaison HTTPS qui héberge Nextcloud.

Éliminez l'avertissement HSTS de Nextcloud en configurant l'en-tête au niveau d'Apache, de NGINX ou de votre proxy TLS, puis vérifiez la réponse HTTPS publique en toute sécurité.

Résolution des problèmes d'installation de l'application Nextcloud signalant une absence de connexion Internet

Résolution des problèmes d'installation de l'application Nextcloud signalant une absence de connexion Internet

Identifiez les échecs d'installation de l'App Store comme étant liés à des problèmes de DNS, HTTPS, de proxy, TLS ou de configuration du serveur Nextcloud lui-même.

Maîtrisez les pics d'utilisation du processeur lors de la prévisualisation de Nextcloud grâce à une file d'attente planifiée

Déplacez le traitement des vignettes vers une planification en arrière-plan contrôlée, réduisez les tailles d'aperçu inutilisées et vérifiez la file d'attente sans surcharger votre serveur Nextcloud.

Obtenez Nextcloud Desktop Sync : passez à l’étape suivante, celle du « traitement des fichiers ».

Trouvez le fichier, la règle d'exclusion, le problème de connexion ou l'état de la base de données client qui bloque la synchronisation Nextcloud, puis vérifiez les chargements et les téléchargements en toute sécurité.

Éliminez l'avertissement OPcache de Nextcloud en ajustant la limite appropriée

Identifiez la limite du cache PHP OPcache qui déclenche l'avertissement de Nextcloud, mettez à jour la configuration PHP web correspondante, redémarrez en toute sécurité et vérifiez le résultat.

Connecter Nextcloud à CODE Docker : Configuration et compromis

Connecter Nextcloud à CODE Docker : Configuration et compromis

Comparez le code intégré et celui basé sur Docker, puis connectez Collabora Online à Nextcloud via un proxy inverse HTTPS sécurisé.

Créez un cluster Nextcloud résilient avec Galera

Planifiez un déploiement Nextcloud HA fiable avec stockage partagé, verrouillage Redis, routage MariaDB prenant en compte le quorum et contrôles de basculement pratiques.

Réussir les appels Nextcloud Talk même en cas de défaillance de Direct Media

Réussir les appels Nextcloud Talk même en cas de défaillance de Direct Media

Configurez et vérifiez un relais TURN accessible pour Nextcloud Talk lorsque des pare-feu ou un NAT restrictif bloquent les flux multimédias d'appel direct.