webbukkit / dynmap

A set of Minecraft mods that provide a real time web-based map system for various Minecraft server implementations.
https://www.reddit.com/r/Dynmap/
Apache License 2.0
2.06k stars 419 forks source link

SQL not working #1615

Closed IonCharge closed 10 years ago

IonCharge commented 10 years ago

I recently noticed that in the dynmap configuration file that the options of using sqlite or a mysql database have been added as an alternative to using the default filetree scheme.

While tinkering around with these options I realized that both sqlite and mysql seem to be fundamentally broken. When trying to use either of the two options, dynmap never created a database. On my mysql server, it never even connected given the proper credentials.

I have attached an image pointing out the exact location in the configuration file.

capture

Psy-Virus commented 10 years ago

Have you tried to create the Database manually and give that "dynmap" user full rights on that database? On my site its working great.... extremely slow compared with standard method like @mikeprimm prophesied in another issue... but it's working^^

IonCharge commented 10 years ago

Yes. I created the user and database in phpmyadmin. Based off the log from my sql server, a connection was not even attempted.

As for the issue of being slow, I have a 2x quad core xeon running and some 15k RPM SAS drives. Im not too worried as I was merely experimenting and ran into the issue. I am also running the following dynmap verision: core=2.0.0-SNAPSHOT-1968, plugin=2.0.0-alpha-1-309

Psy-Virus commented 10 years ago

What says your MC-Server console on start and which server software are you using (bukkit, spigot..etc)?

And pls if you copy and paste take it in

<pre>
TEXT
</pre>

tags for better reading :)

IonCharge commented 10 years ago

I am running a forge modded server, specifically FTB Monster:

When trying to run with sql I get an assortment of errors such as:

2014-06-12 20:02:52 [SEVERE] Encountered an unexpected exception NullPointerException
java.lang.NullPointerException
    at org.dynmap.forge.DynmapPlugin.saveWorlds(DynmapPlugin.java:1800)
    at org.dynmap.forge.DynmapPlugin.onDisable(DynmapPlugin.java:1385)
    at org.dynmap.forge.Proxy.stopServer(Proxy.java:20)
    at org.dynmap.forge.DynmapMod.serverStopping(DynmapMod.java:121)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:545)
    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74)
    at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:313)
    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
    at com.google.common.eventbus.EventBus.post(EventBus.java:267)
    at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:201)
    at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:181)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74)
    at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:313)
    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
    at com.google.common.eventbus.EventBus.post(EventBus.java:267)
    at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:112)
    at cpw.mods.fml.common.Loader.serverStopping(Loader.java:767)
    at cpw.mods.fml.common.FMLCommonHandler.handleServerStopping(FMLCommonHandler.java:324)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:490)
    at net.minecraft.server.ThreadMinecraftServer.run(SourceFile:583)
2014-06-12 20:02:52 [SEVERE] This crash report has been saved to: /home/starwarsman13/ftb_server/./crash-reports/crash-2014-06-12_20.02.52-server.txt

When enabling sql I also get this error (it doesn't happen with sql disabled):

2014-06-12 20:03:06 [WARNING] [ForgeModLoader] Zip file sqlite-jdbc-3.7.15-M1.jar failed to read properly, it will be ignored
java.util.zip.ZipException: zip file is empty
    at java.util.zip.ZipFile.open(Native Method)
    at java.util.zip.ZipFile.(ZipFile.java:215)
    at java.util.zip.ZipFile.(ZipFile.java:145)
    at java.util.jar.JarFile.(JarFile.java:153)
    at java.util.jar.JarFile.(JarFile.java:117)
    at cpw.mods.fml.common.discovery.JarDiscoverer.discover(JarDiscoverer.java:41)
    at cpw.mods.fml.common.discovery.ContainerType.findMods(ContainerType.java:42)
    at cpw.mods.fml.common.discovery.ModCandidate.explore(ModCandidate.java:71)
    at cpw.mods.fml.common.discovery.ModDiscoverer.identifyMods(ModDiscoverer.java:137)
    at cpw.mods.fml.common.Loader.identifyMods(Loader.java:353)
    at cpw.mods.fml.common.Loader.loadMods(Loader.java:484)
    at cpw.mods.fml.server.FMLServerHandler.beginServerLoading(FMLServerHandler.java:99)
    at cpw.mods.fml.common.FMLCommonHandler.onServerStart(FMLCommonHandler.java:350)
    at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:69)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:445)
    at net.minecraft.server.ThreadMinecraftServer.run(SourceFile:583)
Psy-Virus commented 10 years ago

Please edit your comment and put the output in

<pre>
TEXT
</pre>

tags like

<pre>
THIS IS AN EXAMPLE
</pre>
IonCharge commented 10 years ago

Done, I didn't even know tags were supported on github. I guess you learn something new each day!

IonCharge commented 10 years ago

Here are a few more logs:

Time: 6/12/14 8:40 PM
Description: Exception in server tick loop
java.lang.NullPointerException
    at org.dynmap.forge.DynmapPlugin.saveWorlds(DynmapPlugin.java:1800)
    at org.dynmap.forge.DynmapPlugin.onDisable(DynmapPlugin.java:1385)
    at org.dynmap.forge.Proxy.stopServer(Proxy.java:20)
    at org.dynmap.forge.DynmapMod.serverStopping(DynmapMod.java:121)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:545)
    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74)
    at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:313)
    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
    at com.google.common.eventbus.EventBus.post(EventBus.java:267)
    at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:201)
    at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:181)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74)
    at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:313)
    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
    at com.google.common.eventbus.EventBus.post(EventBus.java:267)
    at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:112)
    at cpw.mods.fml.common.Loader.serverStopping(Loader.java:767)
    at cpw.mods.fml.common.FMLCommonHandler.handleServerStopping(FMLCommonHandler.java:324)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:490)
    at net.minecraft.server.ThreadMinecraftServer.run(SourceFile:583)
Time: 6/12/14 8:43 PM
Description: Exception in server tick loop
while scanning for the next token
found character     '\t' that cannot start any token
 in "", line 27, column 1:
        dbfile: dynmap.db
    ^
    at org.dynmap.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:358)
    at org.dynmap.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:179)
    at org.dynmap.snakeyaml.parser.ParserImpl$ParseBlockMappingKey.produce(ParserImpl.java:563)
    at org.dynmap.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:161)
    at org.dynmap.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:146)
    at org.dynmap.snakeyaml.composer.Composer.composeMappingNode(Composer.java:230)
    at org.dynmap.snakeyaml.composer.Composer.composeNode(Composer.java:160)
    at org.dynmap.snakeyaml.composer.Composer.composeMappingNode(Composer.java:237)
    at org.dynmap.snakeyaml.composer.Composer.composeNode(Composer.java:160)
    at org.dynmap.snakeyaml.composer.Composer.composeDocument(Composer.java:123)
    at org.dynmap.snakeyaml.composer.Composer.getSingleNode(Composer.java:106)
    at org.dynmap.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:121)
    at org.dynmap.snakeyaml.Yaml.loadFromReader(Yaml.java:480)
    at org.dynmap.snakeyaml.Yaml.load(Yaml.java:423)
    at org.dynmap.ConfigurationNode.load(ConfigurationNode.java:86)
    at org.dynmap.DynmapCore.initConfiguration(DynmapCore.java:389)
    at org.dynmap.forge.DynmapPlugin.onEnable(DynmapPlugin.java:1307)
    at org.dynmap.forge.Proxy.startServer(Proxy.java:15)
    at org.dynmap.forge.DynmapMod$APICallback.apiListenerAdded(DynmapMod.java:44)
    at org.dynmap.DynmapCommonAPIListener.register(DynmapCommonAPIListener.java:56)
    at org.dynmap.forge.DynmapMod.postInit(DynmapMod.java:102)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:545)
    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74)
    at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:313)
    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
    at com.google.common.eventbus.EventBus.post(EventBus.java:267)
    at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:201)
    at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:181)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74)
    at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:313)
    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
    at com.google.common.eventbus.EventBus.post(EventBus.java:267)
    at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:112)
    at cpw.mods.fml.common.Loader.initializeMods(Loader.java:704)
    at cpw.mods.fml.server.FMLServerHandler.finishServerLoading(FMLServerHandler.java:107)
    at cpw.mods.fml.common.FMLCommonHandler.onServerStarted(FMLCommonHandler.java:355)
    at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:142)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:445)
    at net.minecraft.server.ThreadMinecraftServer.run(SourceFile:583)
Time: 6/12/14 8:51 PM
Description: Exception in server tick loop
while parsing a block mapping
 in "", line 26, column 3:
      type: sqlite
      ^
expected , but found BlockEntry
 in "", line 27, column 3:
      - dbfile: dynmap.db
      ^
    at org.dynmap.snakeyaml.parser.ParserImpl$ParseBlockMappingKey.produce(ParserImpl.java:575)
    at org.dynmap.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:161)
    at org.dynmap.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:146)
    at org.dynmap.snakeyaml.composer.Composer.composeMappingNode(Composer.java:230)
    at org.dynmap.snakeyaml.composer.Composer.composeNode(Composer.java:160)
    at org.dynmap.snakeyaml.composer.Composer.composeMappingNode(Composer.java:237)
    at org.dynmap.snakeyaml.composer.Composer.composeNode(Composer.java:160)
    at org.dynmap.snakeyaml.composer.Composer.composeDocument(Composer.java:123)
    at org.dynmap.snakeyaml.composer.Composer.getSingleNode(Composer.java:106)
    at org.dynmap.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:121)
    at org.dynmap.snakeyaml.Yaml.loadFromReader(Yaml.java:480)
    at org.dynmap.snakeyaml.Yaml.load(Yaml.java:423)
    at org.dynmap.ConfigurationNode.load(ConfigurationNode.java:86)
    at org.dynmap.DynmapCore.initConfiguration(DynmapCore.java:389)
    at org.dynmap.forge.DynmapPlugin.onEnable(DynmapPlugin.java:1307)
    at org.dynmap.forge.Proxy.startServer(Proxy.java:15)
    at org.dynmap.forge.DynmapMod$APICallback.apiListenerAdded(DynmapMod.java:44)
    at org.dynmap.DynmapCommonAPIListener.register(DynmapCommonAPIListener.java:56)
    at org.dynmap.forge.DynmapMod.postInit(DynmapMod.java:102)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:545)
    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74)
    at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:313)
    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
    at com.google.common.eventbus.EventBus.post(EventBus.java:267)
    at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:201)
    at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:181)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74)
    at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:313)
    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
    at com.google.common.eventbus.EventBus.post(EventBus.java:267)
    at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:112)
    at cpw.mods.fml.common.Loader.initializeMods(Loader.java:704)
    at cpw.mods.fml.server.FMLServerHandler.finishServerLoading(FMLServerHandler.java:107)
    at cpw.mods.fml.common.FMLCommonHandler.onServerStarted(FMLCommonHandler.java:355)
    at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:142)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:445)
    at net.minecraft.server.ThreadMinecraftServer.run(SourceFile:583)
Psy-Virus commented 10 years ago

Okay, wait. I'll try to reproduce this error.... I've to set up a Forge server first Could you eventually recheck it with Bukkit? I know that it works with latest Bukkit and Dynmap-Head.jar. Just to identify if Bukkit can connect to your MySQL Server^^

Allright, Log 2 seems to be related to a "tabulator" YAML doesn't like tabulators XD

IonCharge commented 10 years ago

Ok, the tab errors are my fault. I probably should have set Notepad++ to use the YAML markup when making modifications to the configuration file. But what about the other 2 errors?

Since I am running with a 1.6.4 server. I will try to run the latest 1.6.4 bukkit server in a few moments. I just need some time to set it up as I have to FTP all the files to the server.

Psy-Virus commented 10 years ago

So... firstly I don't see any MySQL Option in Dynmap Forge Build. Do you eventually have loaded the wrong .jar?

IonCharge commented 10 years ago

Did you select the latest development version for 1.6.4? It is located here: http://www.minecraftforum.net/topic/1543523-dynmap-dynamic-web-based-maps-for-minecraft/ and states with forge on the site.

EDIT: here is the specific link to the jar: http://mikeprimm.com/dynmap/builds/DynmapForge/Dynmap-HEAD-forge-9.11.1.jar

Psy-Virus commented 10 years ago

Well sry, I tried 1.7.2 ~.~... wait

Psy-Virus commented 10 years ago

Okay, seems to be something Dynmap related... I think mike have to fix that... I've used standard config and dynmap only on that forge build^^, I've also tried with local and remote MySQL Server, SQlite and it's like your errors, and checked also the syntax and so on ... But I've no plan of Java coding, so I can't fix it^^ But be happy, you're not alone :-P

IonCharge commented 10 years ago

So I just tried he mysql connection with craftbukkit and it works: capture

After re-trying with forge it still doesn't work. I hope this can be fixed in a future update!

Also thanks for validating. I was starting to go crazy thinking there was something wrong with my MySQL server.

Psy-Virus commented 10 years ago

No problemo and you're welcome^^

mikeprimm commented 10 years ago

On Forge, by default, the SQLite and MySQL JDBC drivers are not present (unlike in Bukkit, and by extension, MCPC-Plus). You might need to pull those down manually to be added as libraries (I think these is a way for Forge mods to pull them down, but I haven't looked in to how to do that just yet).

For SQLite, pull down https://bitbucket.or...-jdbc-3.7.2.jar For MySQL, pull down http://central.maven...java-5.1.14.jar

If you put the appropriate file in the mods directory, things should work.

IonCharge commented 10 years ago

So I did some research. Bukkit by default has the SQL driver implemented.

It seems that Forge requires a separate driver, specifically: the mysql-x.x.x.JAR. This JAR can be downloaded from: http://dev.mysql.com/downloads/connector/j/ , under platform select platform independednt and download the zip. Once downloaded extract the .JAR file and rename it to mysql.jar

This JAR file then needs to be added to the 'mods' folder of forge minecraft. Now mysql works perfectly. I don't know if you can implement this so Dynmap + the mysql.jar can take up only 1 jar file. This also needs to be done with sqlite as well.

So far everything seems to work as expected. I will post an update soon with detailed findings and instructions.

mikeprimm commented 10 years ago

I thought that was what I said in my previous post :)

z1haze commented 10 years ago

yea it does work. I installed this yesterday with no issues.you have to create the database first though, then it will create all necessary tables and columns and im running the forge version.