diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java index 74c28ae0f4..4f43fe4c39 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java @@ -1079,16 +1079,18 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat private void initValidConnectionChecker() { String realDriverClassName = driver.getClass().getName(); - if (realDriverClassName.equals(JdbcConstants.MYSQL_DRIVER) // - || realDriverClassName.equals(JdbcConstants.MYSQL_DRIVER_6)) { + if (JdbcUtils.isMySqlDriver(realDriverClassName)) { this.validConnectionChecker = new MySqlValidConnectionChecker(); + } else if (realDriverClassName.equals(JdbcConstants.ORACLE_DRIVER) || realDriverClassName.equals(JdbcConstants.ORACLE_DRIVER2)) { this.validConnectionChecker = new OracleValidConnectionChecker(); + } else if (realDriverClassName.equals(JdbcConstants.SQL_SERVER_DRIVER) || realDriverClassName.equals(JdbcConstants.SQL_SERVER_DRIVER_SQLJDBC4) || realDriverClassName.equals(JdbcConstants.SQL_SERVER_DRIVER_JTDS)) { this.validConnectionChecker = new MSSQLValidConnectionChecker(); + } else if (realDriverClassName.equals(JdbcConstants.POSTGRESQL_DRIVER)) { this.validConnectionChecker = new PGValidConnectionChecker(); } diff --git a/src/main/java/com/alibaba/druid/util/JdbcConstants.java b/src/main/java/com/alibaba/druid/util/JdbcConstants.java index 414297028e..072fd09035 100644 --- a/src/main/java/com/alibaba/druid/util/JdbcConstants.java +++ b/src/main/java/com/alibaba/druid/util/JdbcConstants.java @@ -47,6 +47,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 MYSQL_DRIVER_REPLICATE = "com.mysql.jdbc.ReplicationDriver"; 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 a0b9a7abd7..2d76e80c26 100644 --- a/src/main/java/com/alibaba/druid/util/JdbcUtils.java +++ b/src/main/java/com/alibaba/druid/util/JdbcUtils.java @@ -814,4 +814,10 @@ public final class JdbcUtils implements JdbcConstants { throw new SQLException("getCreateTableScript dbType not support for " + dbType); } + + public static boolean isMySqlDriver(String driverClassName) { + return driverClassName.equals(JdbcConstants.MYSQL_DRIVER) // + || driverClassName.equals(JdbcConstants.MYSQL_DRIVER_6) + || driverClassName.equals(JdbcConstants.MYSQL_DRIVER_REPLICATE); + } }