diff --git a/fine-druid/src/main/java/com/fr/third/alibaba/druid/util/MySqlUtils.java b/fine-druid/src/main/java/com/fr/third/alibaba/druid/util/MySqlUtils.java index 5d54464f5..aa1f0c568 100644 --- a/fine-druid/src/main/java/com/fr/third/alibaba/druid/util/MySqlUtils.java +++ b/fine-druid/src/main/java/com/fr/third/alibaba/druid/util/MySqlUtils.java @@ -386,15 +386,14 @@ public class MySqlUtils { public static long getLastPacketReceivedTimeMs(Connection conn) throws SQLException { if (!class_connectionImpl_Error) { - if (conn == null) { - return -1; - } try { - //REPORT-66916 这里之前获取到的是lib下的mysql5实现,而不是自定义mysql8驱动的实现 - String className = conn.getClass().getName(); - class_connectionImpl = Utils.loadClass(className); - if (className.equals("com.mysql.cj.MysqlConnection")) { - mysqlJdbcVersion6 = true; + mysqlJdbcVersion6 = false; + class_connectionImpl = Utils.loadClass("com.mysql.jdbc.MySQLConnection"); + if (class_connectionImpl == null || class_connectionImpl.getClassLoader() != conn.getClass().getClassLoader()) { + class_connectionImpl = Utils.loadClass("com.mysql.cj.MysqlConnection"); + if (class_connectionImpl != null) { + mysqlJdbcVersion6 = true; + } } } catch (Throwable error) { class_connectionImpl_Error = true; @@ -412,7 +411,7 @@ public class MySqlUtils { return -1; } - if (getIdleFor == null && !getIdleForError) { + if (!getIdleForError) { try { getIdleFor = classJdbc.getMethod("getIdleFor"); getIdleFor.setAccessible(true);