Veel plugins slaan gegevens permanent op: rechten, saldo's, logboeken of de geschiedenis van bouwacties. Daarvoor gebruiken ze ofwel een MySQL- of MariaDB-database die ze via het netwerk bereiken, of bestanden in de eigen map onder plugins/, zoals een SQLite- of H2-database, dus een complete database in één enkel bestand. Lukt het openen of opslaan niet, dan ontbreken de gegevens van de plugin of gaan nieuwe wijzigingen verloren.
Elke sectie hieronder behandelt één melding. De volledige melding vind je in de Console of onder Bestanden in logs/latest.log. De regels direct daarna noemen vaak de exacte oorzaak. Maak vóór elke ingreep in pluginmappen, databasebestanden of configuraties onder Back-ups een back-up aan, en verwijder of verplaats databasebestanden alleen als de server is gestopt.
De database weigert de toegang: gebruiker of wachtwoord onjuist
Zo ziet de melding eruit:
java.sql.SQLException: Access denied for user '<Gebruiker>'@'<Adres>' (using password: YES)
Wat erachter zit: Een plugin zoals LuckPerms of CoreProtect wil verbinding maken met zijn MySQL- of MariaDB-database, maar de gebruikersnaam of het wachtwoord klopt niet. De database wijst de aanmelding af. Daardoor kan de plugin geen gegevens laden of opslaan: afhankelijk van de plugin start hij helemaal niet of draait hij zonder zijn rechten, saldo's of logs, en nieuwe wijzigingen komen niet in de database terecht. Staat er aan het einde using password: NO, dan is er in de configuratie helemaal geen wachtwoord ingevuld.
Zo los je het op:
- Kijk onder Databases of bij je database-add-on welke inloggegevens gelden: host, poort, databasenaam, gebruiker en wachtwoord.
- Open onder Bestanden de configuratie van de plugin, bij LuckPerms bijvoorbeeld
plugins/LuckPerms/config.yml, sectiedata. - Vul alle waarden precies zo in als ze in het paneel staan. Let op hoofdletters en kleine letters en op spaties aan het einde.
- Bevat het wachtwoord speciale tekens zoals
#of:, zet het dan tussen enkele aanhalingstekens. YAML, het tekstformaat van deze bestanden, leest de waarde anders verkeerd. - Sla het bestand op en herstart de server.
Goed om te weten: Als het databasewachtwoord is gereset, geldt het oude in geen enkele pluginconfiguratie meer. Vul het nieuwe in op elke plek waar de database wordt gebruikt.
spark kan zijn tijdelijke bestanden niet aanmaken
Zo ziet de melding eruit:
[spark] Exception occurred while rotating profiler job
java.lang.RuntimeException: Unable to create temporary output file
[spark] Failed to stop previous profiler job
Wat erachter zit: spark is een profiler, dus een meetinstrument dat bijhoudt waar de server zijn rekentijd aan besteedt. Zijn tijdelijke bestanden slaat spark op in de map plugins/spark/tmp-client. Ontbreekt deze map, dan mislukt elke meetronde en probeert spark het elke minuut opnieuw. Daarom zie je zoveel dezelfde meldingen. Je server draait er gewoon zonder hinder door, en het is geen probleem met opslagruimte of rechten.
Zo los je het op:
- Het snelst gaat het met de knop „Automatisch herstellen” bij de melding in de Servergezondheid.
- Handmatig: open Bestanden, ga naar de map
plugins/sparken maak daarin de maptmp-clientaan. Let op de exacte schrijfwijze. - Houd de Console een paar minuten in de gaten. De meldingen zouden moeten wegblijven.
Goed om te weten: Alleen herstarten helpt niet, omdat spark de map niet uit zichzelf opnieuw aanmaakt. Hoe je spark gebruikt om lag op te sporen, lees je in spark: lag vinden en begrijpen.
Een plugin kan zijn database niet bereiken
Zo ziet de melding eruit:
<Plugin>-hikari - Connection is not available, request timed out after <Tijd>ms.
com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
[LuckPerms] Failed to init storage
Wat erachter zit: De plugin krijgt geen verbinding met zijn MySQL- of MariaDB-database. Typische oorzaken: de host in de configuratie is onjuist, de database is gestopt, of een bestaande verbinding is verbroken. „Hikari” is de verbindingspool die databaseverbindingen voor de plugin klaarhoudt. Zolang dit aanhoudt, ontbreken de gegevens van de plugin.
Zo los je het op:
- Controleer of je database-add-on draait.
- Vergelijk host en poort in de pluginconfiguratie met de gegevens onder Databases of bij de add-on. Vul niet zomaar
localhostin, maar precies de host uit het paneel. - Herstart de server en bekijk de startmeldingen van de plugin in de Console.
- Heb je geen eigen database nodig, zet de plugin dan om naar lokale opslag, bij LuckPerms met
storage-method: h2inplugins/LuckPerms/config.yml. Gegevens uit de database worden daarbij niet automatisch meegenomen.
Goed om te weten: Volgt na „Error whilst saving group” de melding „Value too long”, dan ligt het niet aan de verbinding. Dan is een invoer langer dan de 200 tekens die LuckPerms hiervoor toestaat, bijvoorbeeld een prefix met veel kleurcodes. Kort hem in.
Grim kan zijn geschiedenisdatabase niet openen
Zo ziet de melding eruit:
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 …
Wat erachter zit: Grim is een anticheatplugin. Met /grim history toont het eerdere analyses van een speler en slaat die daarvoor op in een SQLite-database, een database in één enkel bestand. Om die te openen heeft Grim een SQLite-driver nodig, een klein extra pakket voor databasetoegang. Deze driver ontbreekt, daarom is de geschiedenisdatabase niet beschikbaar.
Zo los je het op:
- Installeer onder Plugins of Mods de afhankelijkheid minecraft-sqlite-jdbc in de versie die bij jouw Grim-versie past.
- Je kunt ook in de Grim-configuratie onder
history.database.typeeen andere geschiedenisdatabase kiezen. - Heb je de geschiedenis niet nodig, schakel hem dan uit: in de configuratie is dat de waarde
enabledin de sectiehistory, de melding schrijft die alshistory.enabled=false. - Stop de server volledig en start hem weer.
Goed om te weten: De melding verschijnt bij elke start, totdat je een van de drie opties toepast.
LuckPerms kan zijn database niet bijwerken
Zo ziet de melding eruit:
[LuckPerms] Something went wrong whilst upgrading the LuckPerms database. Please report this on GitHub.
org.h2.jdbc.JdbcSQLSyntaxErrorException: Sequence "<Naam>" already exists; SQL statement:
Wat erachter zit: Bij een versiewissel past LuckPerms de structuur van zijn database aan de nieuwe versie aan. Deze stap is niet volledig gelukt. De regel direct daarna, meestal een H2- of SQL-melding, noemt de stap die is mislukt. H2 is het databasebestand dat LuckPerms zonder eigen MySQL-database in de map plugins/LuckPerms aanmaakt.
Zo los je het op:
- Stop de server en maak onder Back-ups een back-up aan voordat je het opnieuw probeert.
- Werk LuckPerms bij naar een actuele build die bij jouw serversoftware en versie past.
- Verwijder of bewerk de databasebestanden niet handmatig.
- Treedt de fout opnieuw op, zet dan de back-up terug. Daarna kunnen de officiële migratie van LuckPerms of de LuckPerms-support helpen.
Goed om te weten: Zolang LuckPerms nog draait, bewaar je met lp export <Bestand> alle rechten en groepen extra in een bestand. lp import <Bestand> leest ze later weer in.
Uitgebreid: LuckPerms veilig bijwerken: platform, back-up en rechten
De databasemap van een plugin ontbreekt
Zo ziet de melding eruit:
java.sql.SQLException: path to 'plugins/<Plugin>/databases/<Bestand>.db': '/home/container/plugins/<Plugin>/databases' does not exist
Wat erachter zit: De plugin slaat zijn gegevens op in een SQLite-database, dus in een enkel bestand in de pluginmap. Het bestand zelf kan hij aanmaken, de map daarvoor echter niet. Zolang deze map ontbreekt, kan de plugin niets laden of opslaan, bijvoorbeeld saldo's, kits of warps. Dat kan bijvoorbeeld gebeuren als een pluginmap is verwijderd of maar gedeeltelijk is geüpload.
Zo los je het op:
- Lees in de melding de map achter de dubbele punt af, in het voorbeeld
plugins/<Plugin>/databases. - Open Bestanden en maak precies deze map aan. Let op hoofdletters en kleine letters,
Databasesendatabaseszijn verschillende mappen. - Herstart de server en controleer of de melding wegblijft.
Goed om te weten: /home/container is de bovenste map die je onder Bestanden ziet. Dit deel van het pad laat je weg bij het aanmaken.
Een plugin stuurt SQLite-opdrachten die alleen MySQL kent
Zo ziet de melding eruit:
[SQLITE_ERROR] SQL error or missing database (near "<Woord>": syntax error)
Wat erachter zit: SQLite en MySQL spreken bijna, maar niet helemaal dezelfde databasetaal. De plugin slaat zijn gegevens op in SQLite, maar stuurt opdrachten die alleen MySQL begrijpt. Dit is een fout in de plugin, niet in je bestanden of instellingen. De betreffende functies slaan niets op. Het woord achter near laat zien op welke plek SQLite de opdracht niet begreep.
Zo los je het op:
- Werk de plugin onder Plugins bij naar de nieuwste versie voor jouw serverversie. Misschien is de fout daar al verholpen.
- Biedt de plugin MySQL als opslag aan, maak dan onder Databases een database aan, mits je plan databases bevat.
- Zet in de configuratie van de plugin de opslag om naar MySQL, vul de toegangsgegevens in en herstart de server.
- Helpt geen van beide, meld de fout dan bij de pluginauteur en voeg de regel uit het log toe.
Goed om te weten: Bij de overstap naar MySQL neemt een plugin bestaande SQLite-gegevens meestal niet vanzelf over, tenzij het daarvoor een eigen functie biedt.
EzShops of Jaloquent bereiken hun opslag niet
Zo ziet de melding eruit:
[EzShops] Failed to initialise Jaloquent for player shops; falling back to YAML
com.github.ezframework.jaloquent.exception.StorageException: Failed to begin transaction
Wat erachter zit: Jaloquent is de opslagbibliotheek waarmee EzShops zijn spelershops in een database opslaat. Hier kon Jaloquent een transactie niet starten, oftewel een samenhangende schrijfactie, of EzShops kon zijn Jaloquent-opslag helemaal niet opzetten. De eigenlijke oorzaak staat in de foutmelding direct daarna. EzShops kan gedeeltelijk terugvallen op YAML-bestanden; de gegevens komen dan in bestanden terecht in plaats van in de database.
Zo los je het op:
- Lees in
logs/latest.logde foutmelding direct onder deze regel. Daarin staat de oorzaak bij de database of opslag, bijvoorbeeld „Access denied“ of „Communications link failure“. - Controleer of je database-add-on draait.
- Controleer host, poort en toegangsgegevens in de configuratie van de betreffende plugin.
- Is EzShops teruggevallen op YAML, maak dan onder Back-ups een back-up aan voordat je iets wijzigt. Zo blijven shops behouden die intussen in YAML zijn opgeslagen.
- Herstart de server.
PvPManager vindt zijn databasemap niet
Zo ziet de melding eruit:
[PvPManager] Failed to batch update database
java.sql.SQLException: path to 'plugins/PvPManager/database.db': '<Pad>' does not exist
Wat erachter zit: PvPManager regelt het gevecht tussen spelers en slaat zijn spelergegevens op in de SQLite-database plugins/PvPManager/database.db. De map plugins/PvPManager ontbreekt echter in het bestandssysteem van de server. Daardoor kan PvPManager zijn database niet openen of beschrijven, en worden nieuwe gegevens niet opgeslagen.
Zo los je het op:
- Stop de server.
- Maak onder Bestanden de map
plugins/PvPManageraan en let op de exacte spelling. Of installeer PvPManager onder Plugins opnieuw. - Controleer de bestandsrechten: maak in de nieuwe map als test een bestand aan en verwijder het weer.
- Controleer of er nog genoeg vrije opslagruimte is.
- Start de server en controleer of de melding wegblijft.
Goed om te weten: Is de opslag vol, dan helpt Opslagruimte vol: „No space left on device“ oplossen.
EssentialsX kan zijn UUID-cache niet opslaan
Zo ziet de melding eruit:
[Essentials] Error while saving Name->UUID cache
java.io.IOException: No such file or directory
Wat erachter zit: EssentialsX onthoudt welke spelersnaam bij welke UUID hoort, de vaste identificatie van een Minecraft-account. Deze lijst schrijft het als cache, dus als tussengeheugen, naar zijn gegevensmap en maakt daarvoor eerst een tijdelijk bestand aan. Dat mislukt omdat de map plugins/Essentials ontbreekt of niet beschrijfbaar is. Ontbreekt de map echt, dan kan EssentialsX ook zijn overige gegevens daar niet opslaan.
Zo los je het op:
- Open Bestanden en controleer of de map
plugins/Essentialsbestaat. Maak hem anders aan. - Controleer of hij beschrijfbaar is: maak er als test een bestand in aan en verwijder het weer.
- Werk EssentialsX onder Plugins bij naar een versie voor jouw serverversie.
- Herstart de server.
Goed om te weten: Kun je in de map geen bestand aanmaken, dan is hij waarschijnlijk niet van de gebruiker onder wie je server draait. Kom je er niet uit, open dan een ticket en vermeld het tijdstip van de melding.
FastAsyncWorldEdit: een geschiedenisbestand is beschadigd
Zo ziet de melding eruit:
Could not load block history file plugins/FastAsyncWorldEdit/history/<Map>/<Bestand>
An unexpected error while handling a FastAsyncWorldEdit command
java.io.EOFException: Stream ended prematurely
Wat erachter zit: FastAsyncWorldEdit, kortweg FAWE, slaat bij bouwacties een geschiedenisbestand op, zodat je ze met //undo ongedaan kunt maken. Een van deze bestanden is onvolledig, meestal doordat de server werd gestopt terwijl FAWE nog aan het schrijven was. Precies die //undo is dan niet mogelijk. Je wereld zelf is niet getroffen en de server draait normaal verder.
Zo los je het op:
- Meestal is niets nodig. De melding betreft alleen die ene geschiedenisstap.
- Herhaalt ze zich, stop dan de server.
- Verwijder onder Bestanden de in de melding genoemde map onder
plugins/FastAsyncWorldEdit/history. - Start de server weer.
Goed om te weten: Na het verwijderen kunnen de acties uit die map niet meer ongedaan worden gemaakt. Meer over //undo: WorldEdit: bouwen en ongedaan maken.
WorldEdit: het opgeslagen klembord kan niet worden geladen
Zo ziet de melding eruit:
Error loading clipboard from disk
… Size exceeds Integer.MAX_VALUE
Wat erachter zit: FAWE kan het klembord van een speler op de schijf opslaan. Het opgeslagen klembord kon niet worden geladen: of het is te groot, dan staat „Size exceeds Integer.MAX_VALUE“ in de melding, of het is beschadigd. De speler moet zijn selectie opnieuw kopiëren. Wereld en server worden hier niet door beïnvloed.
Zo los je het op:
- Stop de server.
- Open onder Bestanden de map
plugins/FastAsyncWorldEdit/clipboard. - Verwijder het bestand van de betreffende speler. Zijn naam bevat meestal zijn UUID, de vaste identificatie van zijn Minecraft-account.
- Start de server weer en laat de speler de selectie opnieuw kopiëren.
Goed om te weten: Hele grote kopieën sla je beter op als schematic, dus als eigen bouwplanbestand, bijvoorbeeld met //schem save <Naam>. Die laad je indien nodig met //schem load <Naam> weer in het klembord.
WorldEdit: een schematic bevat een entiteit zonder positie
Zo ziet de melding eruit:
Failed to load a saved clipboard
java.io.IOException: Missing position for entity <Entiteit>
Wat erachter zit: Entiteiten zijn alles in de wereld wat geen blok is, zoals dieren, armor stands of frames. De opgeslagen schematic, oftewel het bouwplanbestand, bevat een entiteit waarvan de positiegegevens ontbreken. Daarom kan WorldEdit de schematic niet volledig laden. Je wereld wordt hier niet door beïnvloed, alleen deze ene schematic kan niet netjes worden geplaatst.
Zo los je het op:
- Staat het bouwwerk nog in een wereld, selecteer het dan opnieuw met WorldEdit en kopieer het met
//copyzonder de optie-e. Zo blijven entiteiten buiten beschouwing. - Sla de nieuwe kopie op met
//schem save <Naam>onder een nieuwe naam en gebruik vanaf nu dit bestand. - Heb je alleen nog het bestand, open het dan in een schematic-editor en verwijder de beschadigde entiteit.
- Laad de schematic daarna met
//schem load <Naam>en controleer of de melding wegblijft.
Goed om te weten: Heb je dieren of frames in het bouwwerk niet nodig, dan is opslaan zonder entiteiten de snelste weg.
Een cachemap ontbreekt
Zo ziet de melding eruit:
java.nio.file.NoSuchFileException: /home/container/.cache/<Bestand>
Wat erachter zit: Een mod of een launcher, oftewel een opstartprogramma, wilde bestanden opslaan in de map .cache in de hoofdmap van je server. Deze map bestaat echter niet. Dat gebeurt meestal na een herinstallatie of als de map bij het opruimen is verwijderd. Meestal lost het zich vanzelf op, omdat de map bij de volgende start opnieuw wordt aangemaakt.
Zo los je het op:
- Start de server één keer opnieuw op. In de meeste gevallen is de melding daarna weg.
- Blijft de melding, open dan Bestanden en maak als test een map aan in de hoofdmap. Lukt dat niet, dan is de map niet beschrijfbaar.
- Controleer of er nog genoeg opslagruimte vrij is. Een volle opslag voorkomt ook dat er mappen worden aangemaakt.
- Kom je er niet uit, open dan een ticket en vermeld het tijdstip van de melding.
Goed om te weten: Bij volle opslag helpt Opslagruimte vol: "No space left on device" oplossen.
Home-plugin kan een teleportpunt niet opslaan
Zo ziet de melding eruit:
Failed to create home for player <Player-ID> in the database.
Wat hierachter zit: Een home is een opgeslagen teleportpunt. De verantwoordelijke plugin probeert een nieuw item in zijn database aan te maken en dat mislukt. Het nieuwe home-item wordt niet opgeslagen; de server draait gewoon door. De concrete oorzaak in de database staat meestal in de aangrenzende foutmeldingen.
Zo los je het op:
- Open in de Console of onder Bestanden in
logs/latest.logde regels direct voor en na de melding. Zoek de naam van de plugin en de bijbehorende databasefoutmelding. - Controleer de opslagconfiguratie van deze plugin. Gebruikt de plugin een externe database, vergelijk dan adres, database en inloggegevens met Databases.
- Maak een back-up van de bestaande database voordat je de instellingen of tabellen ervan wijzigt. Los daarna de concreet genoemde fout op volgens de documentatie van de plugin.
- Probeer het aanmaken van de home opnieuw. Blijft de fout bestaan, meld deze dan bij de auteur met de volledige foutmelding (stacktrace) en het tijdstip.
Goed om te weten: Als je de database verwijdert, worden ook de reeds opgeslagen homes verwijderd.
Staat jouw melding er niet bij?
Lees de hele melding in logs/latest.log en ook de regels ervoor en erna. Bij databasefouten staat de eigenlijke oorzaak vaak in een regel met „Caused by“. Welke plugin het betreft, zie je aan de naam tussen vierkante haken en de mapnamen in de stacktrace, dus in de at …-regels onder de melding, bijvoorbeeld me/lucko/luckperms voor LuckPerms. Controleer dan de inloggegevens, mappen en vrije opslagruimte. Maak vóór elke ingreep een back-up. Kom je er niet uit, open dan een ticket en vermeld het tijdstip van de melding.