De nombreux plugins enregistrent des données de façon durable : permissions, soldes, journaux ou historique des constructions. Pour cela, ils utilisent soit une base de données MySQL ou MariaDB qu'ils joignent via le réseau, soit des fichiers dans leur propre dossier sous plugins/, par exemple une base de données SQLite ou H2, c'est-à-dire une base de données complète dans un seul fichier. Si l'ouverture ou l'enregistrement échoue, le plugin perd ses données ou les nouvelles modifications sont perdues.

Chaque section ci-dessous traite un message. Tu trouveras le message complet dans la Console ou sous Fichiers dans logs/latest.log. Les lignes qui suivent immédiatement indiquent souvent la cause exacte. Avant toute intervention sur les dossiers de plugins, les fichiers de base de données ou les configurations, crée une sauvegarde sous Sauvegardes, et ne supprime ou ne déplace des fichiers de base de données que lorsque le serveur est arrêté.

La base de données refuse l'accès : utilisateur ou mot de passe incorrect

Voici à quoi ressemble le message :

java.sql.SQLException: Access denied for user '<Utilisateur>'@'<Address>' (using password: YES)

Ce qui se cache derrière : Un plugin comme LuckPerms ou CoreProtect essaie de se connecter à sa base de données MySQL ou MariaDB, mais le nom d'utilisateur ou le mot de passe ne correspondent pas. La base de données refuse la connexion. Le plugin ne peut alors ni charger ni enregistrer de données : selon le plugin, il ne démarre pas du tout ou il tourne sans ses permissions, ses soldes ou ses journaux, et les nouvelles modifications ne sont pas enregistrées dans la base de données. Si le message se termine par using password: NO, aucun mot de passe n'est renseigné dans la configuration.

Comment corriger le problème :

  1. Consulte Bases de données ou l'add-on de base de données pour savoir quels identifiants sont valides : hôte, port, nom de la base de données, utilisateur et mot de passe.
  2. Dans Fichiers, ouvre la configuration du plugin, par exemple plugins/LuckPerms/config.yml pour LuckPerms, section data.
  3. Saisis toutes les valeurs exactement comme elles apparaissent dans le panel. Fais attention aux majuscules et minuscules ainsi qu'aux espaces à la fin.
  4. Si le mot de passe contient des caractères spéciaux comme # ou :, mets-le entre apostrophes simples. Sinon, YAML, le format texte de ces fichiers, lit mal la valeur.
  5. Enregistre le fichier et redémarre le serveur.

Bon à savoir : Si le mot de passe de la base de données a été réinitialisé, l'ancien n'est plus valide dans aucune configuration de plugin. Saisis le nouveau partout où la base de données est utilisée.

spark ne peut pas créer ses fichiers temporaires

Voici à quoi ressemble le message :

[spark] Exception occurred while rotating profiler job
java.lang.RuntimeException: Unable to create temporary output file
[spark] Failed to stop previous profiler job

Ce qui se cache derrière : spark est un profileur, c'est-à-dire un outil de mesure qui enregistre à quoi le serveur consacre son temps de calcul. spark stocke ses fichiers temporaires dans le dossier plugins/spark/tmp-client. Si ce dossier est absent, chaque cycle de mesure échoue et spark réessaie toutes les minutes. D'où les nombreux messages identiques. Ton serveur continue de fonctionner sans être affecté, et il ne s'agit ni d'un problème d'espace disque ni d'un problème de droits.

Comment corriger le problème :

  1. Le plus rapide est d'utiliser le bouton « Corriger automatiquement » à côté du message dans Santé du serveur.
  2. À la main : ouvre Fichiers, va dans le dossier plugins/spark et crée-y le dossier tmp-client. Respecte exactement l'orthographe.
  3. Surveille la Console pendant quelques minutes. Les messages ne devraient plus apparaître.

Bon à savoir : Un simple redémarrage ne suffit pas, car spark ne recrée pas le dossier tout seul. Pour savoir comment utiliser spark pour traquer les lags, consulte spark : trouver et comprendre les lags.

Un plugin n'arrive pas à joindre sa base de données

Voici à quoi ressemble le message :

<Plugin>-hikari - Connection is not available, request timed out after <Durée>ms.
com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
[LuckPerms] Failed to init storage

Ce qui se cache derrière : Le plugin n'obtient aucune connexion à sa base de données MySQL ou MariaDB. Causes typiques : l'hôte indiqué dans la configuration est incorrect, la base de données est arrêtée, ou une connexion existante a été interrompue. « Hikari » est le pool de connexions qui garde des connexions à la base de données à disposition du plugin. Tant que le problème persiste, le plugin n'a pas accès à ses données.

Comment corriger le problème :

  1. Vérifie que ton add-on de base de données est en cours d'exécution.
  2. Compare l'hôte et le port dans la configuration du plugin avec les informations indiquées dans Bases de données ou dans l'add-on. N'entre pas simplement localhost, mais exactement l'hôte indiqué dans le panel.
  3. Redémarre le serveur et surveille les messages de démarrage du plugin dans la Console.
  4. Si tu n'as pas besoin de base de données dédiée, configure le plugin pour utiliser un stockage local, pour LuckPerms avec storage-method: h2 dans plugins/LuckPerms/config.yml. Les données de la base de données ne sont pas reprises automatiquement.

Bon à savoir : Si « Error whilst saving group » est suivi de l'indication « Value too long », la connexion n'est pas en cause. Dans ce cas, une entrée dépasse les 200 caractères prévus par LuckPerms, par exemple un préfixe avec beaucoup de codes couleur. Raccourcis-la.

Grim ne peut pas ouvrir sa base de données d'historique

Voici à quoi ressemble le message :

IMPORTANT: Could not load SQLite driver for /grim history database.
Download the minecraft-sqlite-jdbc mod/plugin …, or change history.database.type
Alternatively set history.enabled=false to remove this message …

Ce qui se cache derrière : Grim est un plugin anti-triche. Avec /grim history, il affiche les analyses précédentes concernant un joueur et les enregistre pour cela dans une base de données SQLite, une base de données contenue dans un seul fichier. Pour l'ouvrir, Grim a besoin d'un pilote SQLite, un petit paquet complémentaire pour l'accès à la base de données. Ce pilote est absent, c'est pourquoi la base de données d'historique n'est pas disponible.

Comment corriger le problème :

  1. Dans Plugins ou Mods, installe la dépendance minecraft-sqlite-jdbc dans la version qui correspond à ta version de Grim.
  2. Sinon, choisis une autre base de données d'historique dans la configuration de Grim sous history.database.type.
  3. Si tu n'as pas besoin de l'historique, désactive-le : dans la configuration, c'est la valeur enabled dans la section history, que le message écrit sous la forme history.enabled=false.
  4. Arrête complètement le serveur, puis redémarre-le.

Bon à savoir : Le message apparaît à chaque démarrage tant que tu n'as pas appliqué l'une des trois solutions.

LuckPerms ne peut pas mettre à jour sa base de données

Voici à quoi ressemble le message :

[LuckPerms] Something went wrong whilst upgrading the LuckPerms database. Please report this on GitHub.
org.h2.jdbc.JdbcSQLSyntaxErrorException: Sequence "<Nom>" already exists; SQL statement:

Ce qui se cache derrière : Lors d'un changement de version, LuckPerms adapte la structure de sa base de données à la nouvelle version. Cette étape n'a pas été menée à bien complètement. La ligne qui suit directement, généralement un message H2 ou SQL, indique l'étape qui a échoué. H2 est le fichier de base de données que LuckPerms crée dans le dossier plugins/LuckPerms lorsqu'il n'utilise pas de base de données MySQL dédiée.

Comment corriger le problème :

  1. Arrête le serveur et crée une sauvegarde dans Sauvegardes avant de réessayer.
  2. Mets à jour LuckPerms vers une version récente qui correspond à ton logiciel de serveur et à ta version.
  3. Ne supprime pas et ne modifie pas les fichiers de la base de données à la main.
  4. Si l'erreur se reproduit, restaure la sauvegarde. Ensuite, la migration officielle de LuckPerms ou le support de LuckPerms peuvent t'aider.

Bon à savoir : Tant que LuckPerms fonctionne encore, utilise lp export <Fichier> pour sauvegarder en plus toutes les permissions et tous les groupes dans un fichier. lp import <Fichier> les réimporte plus tard.

En détail : Mettre à jour LuckPerms en toute sécurité : plateforme, sauvegarde et permissions

Le dossier de base de données d'un plugin est manquant

Voici à quoi ressemble le message :

java.sql.SQLException: path to 'plugins/<Plugin>/databases/<Fichier>.db': '/home/container/plugins/<Plugin>/databases' does not exist

Ce qui se cache derrière : Le plugin enregistre ses données dans une base de données SQLite, donc dans un seul fichier situé dans le dossier du plugin. Il peut créer le fichier lui-même, mais pas le dossier qui le contient. Tant que ce dossier est absent, le plugin ne peut rien charger ni enregistrer, par exemple les soldes, les kits ou les warps. Cela peut arriver, par exemple, lorsqu'un dossier de plugin a été supprimé ou n'a été envoyé que partiellement.

Comment corriger le problème :

  1. Dans le message, relève le dossier indiqué après les deux-points, dans l'exemple plugins/<Plugin>/databases.
  2. Ouvre Fichiers et crée exactement ce dossier. Fais attention aux majuscules et minuscules : Databases et databases sont des dossiers différents.
  3. Redémarre le serveur et vérifie que le message ne réapparaît plus.

Bon à savoir : /home/container est le répertoire racine que tu vois dans Fichiers. Tu omets cette partie du chemin lors de la création.

Un plugin envoie des commandes SQLite que seul MySQL connaît

Voici à quoi ressemble le message :

[SQLITE_ERROR] SQL error or missing database (near "<Mot>": syntax error)

Ce qui se cache derrière : SQLite et MySQL parlent presque, mais pas tout à fait, le même langage de base de données. Le plugin enregistre ses données dans SQLite, mais envoie des commandes que seul MySQL comprend. Il s'agit d'une erreur du plugin, pas de tes fichiers ni de tes paramètres. Les fonctions concernées n'enregistrent rien. Le mot après near indique à quel endroit SQLite n'a pas compris la commande.

Voici comment corriger le problème :

  1. Dans Plugins, mets à jour le plugin vers la dernière version compatible avec la version de ton serveur. L'erreur y est peut-être déjà corrigée.
  2. Si le plugin propose MySQL comme stockage, crée une base de données dans Bases de données, à condition que ton plan inclue des bases de données.
  3. Dans la configuration du plugin, passe le stockage sur MySQL, renseigne les identifiants de connexion et redémarre le serveur.
  4. Si rien de tout cela n'aide, signale l'erreur à l'auteur du plugin et joins la ligne du log.

Bon à savoir : Lors du passage à MySQL, un plugin ne reprend généralement pas de lui-même les anciennes données SQLite, sauf s'il propose une fonction dédiée pour cela.

EzShops ou Jaloquent n'arrivent pas à joindre leur stockage

Voici à quoi ressemble le message :

[EzShops] Failed to initialise Jaloquent for player shops; falling back to YAML
com.github.ezframework.jaloquent.exception.StorageException: Failed to begin transaction

Ce qui se cache derrière : Jaloquent est la bibliothèque de stockage par laquelle EzShops enregistre les boutiques des joueurs dans une base de données. Ici, Jaloquent n'a pas pu démarrer une transaction, c'est-à-dire une opération d'écriture cohérente, ou EzShops n'a même pas pu mettre en place son stockage Jaloquent. La véritable cause est indiquée par le message d'erreur juste après. EzShops peut en partie se rabattre sur des fichiers YAML ; les données sont alors stockées dans des fichiers au lieu de la base de données.

Voici comment corriger le problème :

  1. Dans logs/latest.log, lis le message d'erreur situé juste sous cette ligne. Il indique la cause liée à la base de données ou au stockage, par exemple « Access denied » ou « Communications link failure ».
  2. Vérifie que ton module complémentaire de base de données fonctionne.
  3. Contrôle l'hôte, le port et les identifiants dans la configuration du plugin concerné.
  4. Si EzShops s'est rabattu sur YAML, crée une sauvegarde dans Sauvegardes avant de modifier quoi que ce soit. Ainsi, les boutiques qui ont été enregistrées entre-temps en YAML sont conservées.
  5. Redémarre le serveur.

PvPManager ne trouve pas son dossier de base de données

Voici à quoi ressemble le message :

[PvPManager] Failed to batch update database
java.sql.SQLException: path to 'plugins/PvPManager/database.db': '<Chemin>' does not exist

Ce qui se cache derrière : PvPManager gère les combats entre joueurs et enregistre les données des joueurs dans la base de données SQLite plugins/PvPManager/database.db. Toutefois, le dossier plugins/PvPManager est absent du système de fichiers du serveur. PvPManager ne peut donc ni ouvrir ni écrire sa base de données, et les nouvelles données ne sont pas enregistrées.

Voici comment corriger le problème :

  1. Arrête le serveur.
  2. Dans Fichiers, crée le dossier plugins/PvPManager en respectant exactement l'orthographe. Sinon, réinstalle proprement PvPManager dans Plugins.
  3. Vérifie les droits d'accès aux fichiers : crée un fichier de test dans le nouveau dossier, puis supprime-le.
  4. Vérifie qu'il reste assez d'espace de stockage libre.
  5. Démarre le serveur et vérifie que le message n'apparaît plus.

Bon à savoir : Si le stockage est plein, consulte Espace de stockage plein : résoudre « No space left on device ».

EssentialsX ne peut pas enregistrer son cache d'UUID

Voici à quoi ressemble le message :

[Essentials] Error while saving Name->UUID cache
java.io.IOException: No such file or directory

Ce qui se cache derrière : EssentialsX retient quel nom de joueur correspond à quel UUID, l'identifiant fixe d'un compte Minecraft. Il écrit cette liste sous forme de cache, c'est-à-dire de mémoire tampon, dans son dossier de données, en créant d'abord un fichier temporaire. Cela échoue parce que le dossier plugins/Essentials est absent ou n'est pas accessible en écriture. Si le dossier est vraiment absent, EssentialsX ne peut pas non plus y enregistrer ses autres données.

Voici comment corriger le problème :

  1. Ouvre Fichiers et vérifie que le dossier plugins/Essentials existe. Crée-le si besoin.
  2. Vérifie qu'il est accessible en écriture : crée-y un fichier de test, puis supprime-le.
  3. Dans Plugins, mets à jour EssentialsX vers une version compatible avec la version de ton serveur.
  4. Redémarre le serveur.

Bon à savoir : Si tu ne peux créer aucun fichier dans le dossier, il n'appartient probablement pas à l'utilisateur sous lequel ton serveur fonctionne. Si tu es bloqué, ouvre un ticket et indique l'heure du message.

FastAsyncWorldEdit : un fichier d'historique est corrompu

Voici à quoi ressemble le message :

Could not load block history file plugins/FastAsyncWorldEdit/history/<Dossier>/<Fichier>
An unexpected error while handling a FastAsyncWorldEdit command
java.io.EOFException: Stream ended prematurely

Ce qui se cache derrière : FastAsyncWorldEdit, FAWE en abrégé, enregistre un fichier d'historique pour chaque action de construction afin que tu puisses l'annuler avec //undo. L'un de ces fichiers est incomplet, le plus souvent parce que le serveur a été arrêté pendant que FAWE écrivait encore. C'est précisément ce //undo qui est alors impossible. Ton monde n'est pas affecté et le serveur continue de fonctionner normalement.

Voici comment corriger le problème :

  1. Le plus souvent, rien n'est nécessaire. Le message ne concerne que cette seule étape de l'historique.
  2. S'il se répète, arrête le serveur.
  3. Dans Fichiers, supprime le dossier mentionné dans le message sous plugins/FastAsyncWorldEdit/history.
  4. Redémarre le serveur.

Bon à savoir : Après la suppression, les actions de ce dossier ne peuvent plus être annulées. Plus d'infos sur //undo : WorldEdit : construire et annuler.

WorldEdit : le presse-papiers enregistré ne peut pas être chargé

Voici à quoi ressemble le message :

Error loading clipboard from disk
… Size exceeds Integer.MAX_VALUE

Ce qui se cache derrière : FAWE peut stocker le presse-papiers d'un joueur sur le disque. Le presse-papiers enregistré n'a pas pu être chargé : soit il est trop volumineux, auquel cas « Size exceeds Integer.MAX_VALUE » apparaît dans le message, soit il est corrompu. Le joueur doit recopier sa sélection. Le monde et le serveur ne sont pas affectés.

Voici comment corriger le problème :

  1. Arrête le serveur.
  2. Dans Fichiers, ouvre le dossier plugins/FastAsyncWorldEdit/clipboard.
  3. Supprime le fichier du joueur concerné. Son nom contient en général son UUID, l'identifiant fixe de son compte Minecraft.
  4. Redémarre le serveur et demande au joueur de recopier sa sélection.

Bon à savoir : Il vaut mieux enregistrer les très grandes copies sous forme de schematic, c'est-à-dire un fichier de plan de construction à part, par exemple avec //schem save <Nom>. Tu la recharges au besoin dans le presse-papiers avec //schem load <Nom>.

WorldEdit : une schematic contient une entité sans position

Voici à quoi ressemble le message :

Failed to load a saved clipboard
java.io.IOException: Missing position for entity <Entity>

Ce qui se passe : les entités sont tout ce qui, dans le monde, n'est pas un bloc, par exemple les animaux, les supports d'armure ou les cadres. La schematic enregistrée, c'est-à-dire le fichier de plan de construction, contient une entité à laquelle il manque l'indication de position. WorldEdit ne peut donc pas charger entièrement la schematic. Ton monde n'est pas touché, seule cette schematic ne peut pas être collée correctement.

Comment le corriger :

  1. Si la construction se trouve encore dans un monde, sélectionne-la à nouveau avec WorldEdit et copie-la avec //copy sans l'option -e. Ainsi, les entités sont exclues.
  2. Enregistre la nouvelle copie avec //schem save <Name> sous un nouveau nom et utilise désormais ce fichier.
  3. Si tu n'as plus que le fichier, ouvre-le dans un éditeur de schematics et supprime l'entité endommagée.
  4. Charge ensuite la schematic avec //schem load <Name> et vérifie que le message n'apparaît plus.

Bon à savoir : si tu n'as pas besoin d'animaux ou de cadres dans la construction, enregistrer sans entités est le moyen le plus rapide.

Un dossier de cache est introuvable

Voici à quoi ressemble le message :

java.nio.file.NoSuchFileException: /home/container/.cache/<File>

Ce qui se passe : un mod ou un launcher, c'est-à-dire un programme de démarrage, voulait stocker des fichiers dans le dossier .cache à la racine de ton serveur. Or ce dossier n'existe pas. Cela arrive généralement après une réinstallation ou si le dossier a été supprimé lors d'un nettoyage. Le plus souvent, le problème se règle tout seul, car le prochain démarrage recrée le dossier.

Comment le corriger :

  1. Redémarre le serveur une fois. Dans la plupart des cas, le message a disparu ensuite.
  2. S'il persiste, ouvre Fichiers et crée un dossier à la racine pour tester. Si cela ne fonctionne pas, le répertoire n'est pas accessible en écriture.
  3. Vérifie qu'il reste assez d'espace de stockage. Un stockage plein empêche aussi la création de dossiers.
  4. Si tu es bloqué, ouvre un ticket et indique l'heure du message.

Bon à savoir : si le stockage est plein, consulte Espace de stockage plein : résoudre « No space left on device ».

Le plugin de homes ne peut pas enregistrer un point de téléportation

Voici à quoi ressemble le message :

Failed to create home for player <Player-ID> in the database.

Ce qui se cache derrière : un home est un point de téléportation enregistré. Le plugin concerné essaie de créer une nouvelle entrée dans sa base de données et échoue. Le nouveau home n'est pas enregistré ; le serveur continue de fonctionner. La cause précise côté base de données figure généralement dans les messages d'erreur voisins.

Voici comment y remédier :

  1. Dans la Console ou sous Fichiers dans logs/latest.log, ouvre les lignes situées juste avant et juste après le message. Cherche le nom du plugin et le message d'erreur de base de données correspondant.
  2. Vérifie la configuration de stockage de ce plugin. S'il utilise une base de données externe, compare l'adresse, la base de données et les identifiants avec ceux de Bases de données.
  3. Sauvegarde la base de données existante avant de modifier ses paramètres ou ses tables. Corrige ensuite l'erreur précise indiquée en suivant la documentation du plugin.
  4. Essaie de nouveau de créer le home. Si l'erreur persiste, signale-la à l'auteur avec la trace d'erreur complète et l'heure.

Bon à savoir : supprimer la base de données supprime aussi les homes déjà enregistrés.

Ton message n'est pas dans la liste ?

Lis le message entier dans logs/latest.log, ainsi que les lignes qui le précèdent et le suivent. Pour les erreurs de base de données, la vraie cause se trouve souvent dans une ligne contenant « Caused by ». Le nom entre crochets et les noms de dossiers dans la stacktrace, c'est-à-dire dans les lignes at … sous le message, comme me/lucko/luckperms pour LuckPerms, t'indiquent quel plugin est concerné. Vérifie ensuite les identifiants, les dossiers et l'espace de stockage disponible. Crée une sauvegarde avant toute intervention. Si tu es bloqué, ouvre un ticket et indique l'heure du message.