数据使用的是Sybase,驱动为jconn3.jar,使用Druid连接数据库时报错。错误日志:
2021-10-12 17:00:01.239 [main] WARN c.a.druid.pool.DruidConnectionHolder - getHoldability unsupported
com.sybase.jdbc3.utils.UnimplementedOperationException: 尚未完成方法 com.sybase.jdbc3.jdbc.SybConnection.getHoldability(),不应调用它。
查看源码发现,DruidConnectionHolder中有个静态变量控制这个getHoldability的执行
boolean initUnderlyHoldability=!holdabilityUnsupported;
if (("sybase".equals(dataSource.dbType)) ||
("db2".equals(dataSource.dbType)) ||
("hive".equals(dataSource.dbType)) ||
("odps".equals(dataSource.dbType))) {
initUnderlyHoldability=false;
}
虽然数据库是SyBase的,但是db-type:sysbase启动就页面报错,只能用db-type:sqlserver,而sqlserver不在排除逻辑里。介于holdabilityUnsupported是一个public的静态变量,所以只能手动排除,处理方法如下。
DruidConnectionHolder.holdabilityUnsupported=true;
ApplicationContext context=SpringApplication(Application.class, args);
即在Druid启动前,将holdabilityUnsupported置为true,让Druid不要去执行驱动的getHoldability方法。