一、异常日志
org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection: dbType not support : null, url jdbc:p6spy:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&zeroDateTimeBehavior=CONVERT_TO_NULL&&serverTimezone=GMT%2B8
二、操作流程
我项目中用的mybatis-plus 3.4.0版本,但是Mybatis-Plus在3.2.0以上版本移除了性能分析插件,作者推荐使用p6spy,根据文档操作,然后运行,直接报错!
三、原因探索
获取JDBC连接失败,怀疑是mysql驱动原因,检查后发现版本配置是没有问题的,报错依旧,然后怀疑是连接池的原因,于是翻看Druid文档,看到如下一段话:
WallFilter目前支持哪些数据库?WallFilter针对不同的数据库使用不同的SQL Parser和相关配置信息,力求完整理解其SQL语义,从而做更准确的防御手段。Druid目前支持mysql和oracle、sql server,下一步会支持postgres。
所以,要么关闭Druid的wallFilter,要么换数据源。
四、处理方法,去掉druid的防火墙
方法1:在你的DruidConfig文件(如果有)中应该有类似这样的配置:
List filters = new ArrayList<>();
filters.add(wallFilter());
去掉防火墙配置。
方法2: application.yml文件中配置:
# Spring相关配置
spring:
datasource:
# DruidDataSource配置
druid:
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
filters: stat,wall
直接去掉wall就行了。