diff --git a/pom.xml b/pom.xml index 8fe77b64d6..dcef558cf2 100644 --- a/pom.xml +++ b/pom.xml @@ -475,7 +475,7 @@ mysql mysql-connector-java - 6.0.3 + 5.1.39 provided diff --git a/src/main/java/com/alibaba/druid/util/JdbcConstants.java b/src/main/java/com/alibaba/druid/util/JdbcConstants.java index 7c1ee0b274..6c6ccf7178 100644 --- a/src/main/java/com/alibaba/druid/util/JdbcConstants.java +++ b/src/main/java/com/alibaba/druid/util/JdbcConstants.java @@ -45,6 +45,7 @@ public interface JdbcConstants { public static final String MYSQL = "mysql"; public static final String MYSQL_DRIVER = "com.mysql.jdbc.Driver"; + public static final String MYSQL_DRIVER_6 = "com.mysql.cj.jdbc.Driver"; public static final String MARIADB = "mariadb"; public static final String MARIADB_DRIVER = "org.mariadb.jdbc.Driver"; diff --git a/src/main/java/com/alibaba/druid/util/JdbcUtils.java b/src/main/java/com/alibaba/druid/util/JdbcUtils.java index 1b133a5feb..84517fd02e 100644 --- a/src/main/java/com/alibaba/druid/util/JdbcUtils.java +++ b/src/main/java/com/alibaba/druid/util/JdbcUtils.java @@ -50,6 +50,8 @@ public final class JdbcUtils implements JdbcConstants { private static final Properties DRIVER_URL_MAPPING = new Properties(); + private static Boolean mysql_driver_version_6 = null; + static { try { ClassLoader ctxClassLoader = Thread.currentThread().getContextClassLoader(); @@ -364,7 +366,15 @@ public final class JdbcUtils implements JdbcConstants { if (rawUrl.startsWith("jdbc:derby:")) { return "org.apache.derby.jdbc.EmbeddedDriver"; } else if (rawUrl.startsWith("jdbc:mysql:")) { - return MYSQL_DRIVER; + if (mysql_driver_version_6 == null) { + mysql_driver_version_6 = Utils.loadClass("com.mysql.cj.jdbc.Driver") != null; + } + + if (mysql_driver_version_6) { + return MYSQL_DRIVER_6; + } else { + return MYSQL_DRIVER; + } } else if (rawUrl.startsWith("jdbc:log4jdbc:")) { return LOG4JDBC_DRIVER; } else if (rawUrl.startsWith("jdbc:mariadb:")) {