Browse Source

REPORT-66916 fix:使用自定义mysql8驱动,连接失败

bugfix/KERNEL-11409-jackson
Roger.Chen 3 years ago
parent
commit
2a6aac26f6
  1. 16
      fine-druid/src/main/java/com/fr/third/alibaba/druid/util/MySqlUtils.java

16
fine-druid/src/main/java/com/fr/third/alibaba/druid/util/MySqlUtils.java

@ -386,13 +386,15 @@ public class MySqlUtils {
public static long getLastPacketReceivedTimeMs(Connection conn) throws SQLException { public static long getLastPacketReceivedTimeMs(Connection conn) throws SQLException {
if (!class_connectionImpl_Error) { if (!class_connectionImpl_Error) {
if (conn == null) {
return -1;
}
try { try {
class_connectionImpl = Utils.loadClass("com.mysql.jdbc.MySQLConnection"); //REPORT-66916 这里之前获取到的是lib下的mysql5实现,而不是自定义mysql8驱动的实现
if (class_connectionImpl == null) { String className = conn.getClass().getName();
class_connectionImpl = Utils.loadClass("com.mysql.cj.MysqlConnection"); class_connectionImpl = Utils.loadClass(className);
if (class_connectionImpl != null) { if (className.equals("com.mysql.cj.MysqlConnection")) {
mysqlJdbcVersion6 = true; mysqlJdbcVersion6 = true;
}
} }
} catch (Throwable error) { } catch (Throwable error) {
class_connectionImpl_Error = true; class_connectionImpl_Error = true;
@ -431,7 +433,7 @@ public class MySqlUtils {
return System.currentTimeMillis() return System.currentTimeMillis()
- ((Long) - ((Long)
getIdleFor.invoke(connImpl)) getIdleFor.invoke(connImpl))
.longValue(); .longValue();
} catch (Exception e) { } catch (Exception e) {
throw new SQLException("getIdleFor error", e); throw new SQLException("getIdleFor error", e);

Loading…
Cancel
Save