Vous ouvrez la vue d'ensemble de l'administration de Nextcloud et constatez le message : « La base de données ne contient pas tous les index. » Cet avertissement peut apparaître après une mise à niveau, car Nextcloud peut ajouter de nouveaux index aux tables existantes au fil du temps, et ne les crée pas toujours automatiquement sur une base de données volumineuse. L'absence d'index peut ralentir certaines requêtes. La solution proposée est la commande intégrée occ db:add-missing-indices.
Avant de modifier le schéma, assurez-vous d'utiliser la commande correspondant à votre installation Nextcloud, effectuez une sauvegarde de la base de données et utilisez l'utilisateur du système d'exploitation du serveur web. Sur les versions compatibles, prévisualisez la requête SQL proposée --dry-run. Lancez ensuite la réparation et vérifiez à nouveau l'aperçu de l'administration.
Que signifie cet avertissement ?
Un index de base de données est une structure qui permet à la base de données de trouver des lignes sans parcourir l'intégralité de la table. Nextcloud et ses applications définissent des index pour les tables et les champs qu'elles utilisent. Lorsqu'une nouvelle version de Nextcloud ou d'une application introduit un index absent de l'installation existante, la page d'administration peut signaler cette incompatibilité. Il s'agit d'un avertissement relatif à la maintenance du schéma ; en soi, cela ne signifie pas que la base de données est corrompue ni que des fichiers utilisateur sont manquants.
Le manuel d'administration de Nextcloud indique que des index peuvent être ajoutés au fil du temps, notamment pour améliorer les performances, et recommande aux administrateurs d'exécuter la occ db:add-missing-indicescommande appropriée. L'ajout d'un index peut prendre du temps, surtout pour une table volumineuse, et la charge de la base de données ainsi que le comportement de verrouillage peuvent varier selon le moteur de base de données et la charge de travail. Si votre instance est sollicitée, planifiez cette modification pendant une période de faible activité.
Avant de procéder à la réparation
- Veuillez confirmer le chemin d'installation et la version. Exécutez les commandes depuis le répertoire contenant le script d'installation souhaité
occou indiquez son chemin complet. - Sauvegardez la base de données. Utilisez votre procédure de sauvegarde habituelle pour MariaDB/MySQL, PostgreSQL ou SQLite. Vérifiez que la sauvegarde est terminée et que vous savez comment la restaurer.
- Trouvez l'utilisateur HTTP.
www-data Utilisez le compte qui exécute le serveur web de Nextcloud. Sur Debian, Ubuntu, apacheFedora, CentOS, httpArch et wwwrunopenSUSE, par exemple . Votre configuration peut être différente. - Vérifiez les options de commande. Le manuel d'administration stable de Nextcloud 35 les documente
--dry-run. Si votre version installée ne la reconnaît pas, consultez la occ db:add-missing-indices --helpdocumentation correspondante et ignorez l'aperçu plutôt que de supposer que l'option existe.
Le guide de sauvegarde officiel répertorie la base de données, la configuration, le répertoire de données et les autres composants d'installation à conserver pour une sauvegarde complète. Pour cette opération de schéma, effectuez au minimum une sauvegarde de base de données testée en suivant la procédure appropriée.
Étape 1 : Ouvrez un terminal dans l’installation de Nextcloud.
Pour une installation Linux classique, connectez-vous au serveur via SSH et accédez au répertoire Nextcloud. Sous Ubuntu, le chemin courant est `/etc/nextcloud` /var/www/nextcloud, mais utilisez le chemin spécifique à votre serveur.
cd /var/www/nextcloud
sudo -E -u www-data php occ status
Vérifiez que le résultat de l'état indique bien l'instance installée attendue. Si vous utilisez une version de PHP différente de celle par défaut du shell pour le serveur web php, utilisez la même version compatible occ. L'exécution occen tant qu'utilisateur HTTP permet de préserver les droits d'accès et de propriété des fichiers.
Étape 2 : Prévisualiser les modifications de l’index
Si votre version installée le permet, effectuez d'abord un test à blanc :
sudo -E -u www-data php occ db:add-missing-indices --dry-run
La simulation permet de prévisualiser les instructions SQL sans les exécuter. Lisez le résultat et vérifiez qu'il concerne bien les index manquants que vous souhaitez réparer. Si le résultat identifie une table ou un index que vous ne reconnaissez pas, notez son nom exact et vérifiez si l'application correspondante est installée et à jour. Ne copiez pas directement le code SQL prévisualisé dans la console de la base de données.
Étape 3 : Ajouter les index manquants
Lorsque l'aperçu est attendu et que la sauvegarde est prête, exécutez la commande de réparation documentée :
sudo -E -u www-data php occ db:add-missing-indices
Cette commande vérifie les tables de la base de données et crée les index définis dans le schéma mais absents de l'installation actuelle. Laissez-la terminer. Sur une base de données volumineuse, cette opération peut prendre un certain temps. Évitez de l'interrompre pendant la modification du schéma. La documentation de Nextcloud indique que cette commande peut être exécutée sans interrompre l'instance ; le mode maintenance n'est pas mentionné comme prérequis pour cette réparation. Si une fenêtre de maintenance est nécessaire, suivez votre propre procédure de gestion des changements.
Docker et autres types d'installation
Dans un déploiement conteneurisé, exécutez les commandes occdans le conteneur de l'application Nextcloud, et non dans celui de la base de données. Les noms des conteneurs et des services varient ; vérifiez donc votre déploiement et remplacez-les par les noms corrects. Pour un conteneur Docker nommé `<nom_du_conteneur>` nextcloud, le modèle est :
docker exec --user www-data nextcloud php occ db:add-missing-indices
Pour Docker Compose, le modèle correspondant est `<nom_du_conteneur>` docker compose exec -u www-data <nextcloud-service> php occ db:add-missing-indices. Certains déploiements préconfigurés utilisent une commande dédiée ou un utilisateur de conteneur différent ; suivez les instructions spécifiques à ce package. Ne copiez pas le nom d'un conteneur depuis la configuration d'une autre personne sans l'avoir vérifié.
Si la commande échoue ou si l'avertissement persiste
- Accès refusé : vérifiez l’utilisateur HTTP et le chemin d’installation. N’exécutez pas la commande en tant que superutilisateur (root) pour résoudre ce problème, sauf si la documentation de votre déploiement exige explicitement un processus privilégié ; le processus PHP doit généralement s’exécuter avec les privilèges de l’utilisateur du serveur web.
- Erreur de connexion à la base de données ou erreur PHP : vérifiez les journaux Nextcloud, l’état du service de base de données, la version PHP configurée et le résultat de la commande. Résolvez le problème de connexion ou d’exécution sous-jacent avant de relancer la commande de schéma.
- Erreur de clé dupliquée ou d'index unique : arrêtez l'exécution et conservez le texte d'erreur complet. Ce message peut indiquer des lignes en conflit empêchant la création d'un index unique. Identifiez l'application et la table concernées, vérifiez les versions de l'application et de Nextcloud, puis contactez le responsable de l'application ou un administrateur connaissant bien cette base de données. Ne supprimez aucune ligne ni aucun index sans avoir effectué un diagnostic précis des données et sans avoir réalisé une sauvegarde.
- Commande introuvable ou option non prise en charge : vérifiez que vous utilisez la bonne installation Nextcloud et connectez
php occ list-vous php occ help db:add-missing-indicesen tant qu’utilisateur HTTP. Les versions plus anciennes peuvent ne pas proposer toutes les nouvelles options. - L'avertissement persiste : actualisez la vue d'ensemble de l'administration une fois la commande terminée. Consultez les noms exacts des index et des tables mentionnés dans l'avertissement. Il peut s'agir de plusieurs index manquants, d'un index nouvellement créé suite à une mise à jour de l'application, d'une opération de base de données ayant échoué ou d'une incompatibilité de schéma que cette commande n'a pas résolue.
Ne confondez pas les index manquants avec les colonnes ou clés primaires manquantes. Nextcloud documente des commandes distinctes pour ces modifications de schéma, telles que ` db:add-missing-columnsupdate` et `update` db:add-missing-primary-keys. N'effectuez une réparation différente que si l'avertissement de l'administrateur ou la documentation spécifique à votre version le requiert.
Vérifiez le résultat
- Attendez que
db:add-missing-indicesles sorties et les rapports soient terminés, comme par exempleDone. - Rechargez la vue d'ensemble de l'administration et vérifiez que l'avertissement relatif à l'index manquant a disparu.
- Si le problème persiste, comparez les noms exacts de sa table et de son index avec la sortie de la commande plutôt que de la relancer à l'aveuglette.
- Vérifiez le journal Nextcloud et l'état de la base de données pour détecter de nouvelles erreurs, puis assurez-vous que l'accès normal aux fichiers et les applications utilisant les tables concernées fonctionnent toujours.
- Conservez la sauvegarde jusqu'à ce que l'instance ait fonctionné normalement et que votre politique de rétention autorise sa suppression.
Pour connaître la syntaxe actuelle des commandes, consultez le guide de référence des commandes de base de données et d'index de Nextcloud . Pour connaître la configuration requise pour l'utilisateur et PHP, consultez la documentation relative à la commande `occ` et le guide de sauvegarde de Nextcloud . Ces pages stables indiquent que le manuel actuel correspond à Nextcloud Server 35 (au 6 octobre 2026) ; les chemins d'accès, les options et les instructions d'installation peuvent varier selon les versions ou les types de déploiement.