druid数据源使用Mybatis-Plus 3.4.0版本集成p6spy踩坑

it2022-12-28  75

一、异常日志

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就行了。

最新回复(0)