From 0872a5bb35a3e8bd95c2991fbafc7be83e3793c0 Mon Sep 17 00:00:00 2001 From: stormboomer Date: Sat, 28 Aug 2021 21:52:38 +0200 Subject: [PATCH 1/2] Adds requested feature for #3432 --- .../dynmap/storage/mysql/MySQLMapStorage.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/DynmapCore/src/main/java/org/dynmap/storage/mysql/MySQLMapStorage.java b/DynmapCore/src/main/java/org/dynmap/storage/mysql/MySQLMapStorage.java index 61f249f0..10dbd35a 100644 --- a/DynmapCore/src/main/java/org/dynmap/storage/mysql/MySQLMapStorage.java +++ b/DynmapCore/src/main/java/org/dynmap/storage/mysql/MySQLMapStorage.java @@ -293,14 +293,19 @@ public class MySQLMapStorage extends MapStorage { connectionString = "jdbc:mysql://" + hostname + ":" + port + "/" + database + flags; Log.info("Opening MySQL database " + hostname + ":" + port + "/" + database + " as map store"); try { - Class.forName("com.mysql.jdbc.Driver"); - // Initialize/update tables, if needed - if(!initializeTables()) { + Class.forName("com.mysql.cj.jdbc.Driver"); + } catch (ClassNotFoundException cnfxLatestDriver){ + Log.warning("MySQL-JDBC Did not find 'com.mysql.cj.jdbc.Driver' trying 'com.mysql.jdbc.Driver' next"); + try { + Class.forName("com.mysql.jdbc.Driver"); + } catch (ClassNotFoundException cnfx) { + Log.severe("MySQL-JDBC classes not found - MySQL data source not usable"); return false; } - } catch (ClassNotFoundException cnfx) { - Log.severe("MySQL-JDBC classes not found - MySQL data source not usable"); - return false; + } + // Initialize/update tables, if needed + if(!initializeTables()) { + return false; } return writeConfigPHP(core); } From 70c282ccd0c716ee642de6976dfeed25e6fd68b0 Mon Sep 17 00:00:00 2001 From: stormboomer Date: Sat, 28 Aug 2021 22:01:43 +0200 Subject: [PATCH 2/2] adding a function to check if a class exists, allows for better addition if other connector classes need to be checked in the future --- .../dynmap/storage/mysql/MySQLMapStorage.java | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/DynmapCore/src/main/java/org/dynmap/storage/mysql/MySQLMapStorage.java b/DynmapCore/src/main/java/org/dynmap/storage/mysql/MySQLMapStorage.java index 10dbd35a..9d15b483 100644 --- a/DynmapCore/src/main/java/org/dynmap/storage/mysql/MySQLMapStorage.java +++ b/DynmapCore/src/main/java/org/dynmap/storage/mysql/MySQLMapStorage.java @@ -292,16 +292,10 @@ public class MySQLMapStorage extends MapStorage { connectionString = "jdbc:mysql://" + hostname + ":" + port + "/" + database + flags; Log.info("Opening MySQL database " + hostname + ":" + port + "/" + database + " as map store"); - try { - Class.forName("com.mysql.cj.jdbc.Driver"); - } catch (ClassNotFoundException cnfxLatestDriver){ - Log.warning("MySQL-JDBC Did not find 'com.mysql.cj.jdbc.Driver' trying 'com.mysql.jdbc.Driver' next"); - try { - Class.forName("com.mysql.jdbc.Driver"); - } catch (ClassNotFoundException cnfx) { - Log.severe("MySQL-JDBC classes not found - MySQL data source not usable"); - return false; - } + + if(!hasClass("com.mysql.cj.jdbc.Driver") && !hasClass("com.mysql.jdbc.Driver")){ + Log.severe("MySQL-JDBC classes not found - MySQL data source not usable"); + return false; } // Initialize/update tables, if needed if(!initializeTables()) { @@ -310,6 +304,15 @@ public class MySQLMapStorage extends MapStorage { return writeConfigPHP(core); } + private boolean hasClass(String classname){ + try{ + Class.forName(classname); + return true; + } catch (ClassNotFoundException cnfx){ + return false; + } + } + private boolean writeConfigPHP(DynmapCore core) { File cfgfile = new File(baseStandaloneDir, "MySQL_config.php"); if (!core.isInternalWebServerDisabled) { // If using internal server