我项目中用的mybatis-plus
,但是mp在3.2.0以上版本移除了性能分析插件,转而使用p6spy
,好吧,配置很简单,毕竟springboot,一顿复制粘贴,搞定,运行,然后华丽地报错了:
org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection: dbType not support : null, url jdbc:p6spy:mysql://localhost:3306/weimi?allowMultiQueries=true&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=utf-8&useSSL=false&useAffectedRows=true&tinyInt1isBit=false&useTimezone=true&serverTimezone=UTC
dbType不支持,不支持什么?怀疑是mysql8的原因,遂换成5.5,报错依旧,然后怀疑是连接池的原因,于是翻看Druid文档,看到如下一段话:
WallFilter目前支持哪些数据库?WallFilter针对不同的数据库使用不同的SQL Parser和相关配置信息,力求完整理解其SQL语义,从而做更准确的防御手段。Druid目前支持mysql和oracle、sql server,下一步会支持postgres。
所以,要么关闭Druid的wallFilter,要么换数据源- -。
关闭方法1:
在你的DruidConfig
文件(如果有)中应该有类似这样的配置:
List<Filter> filters = new ArrayList<>();
filters.add(wallFilter());
注释之。
关闭方法2:
application.properties
中配置:
spring.datasource.druid.filters=stat,wall
去掉wall
就行了。
值得注意的是,mysql8.x和mysql5.x的driver-class-name
是不同的,但是在p6spy的spy.properties配置文件中不需要写com.mysql.cj.jdbc.Driver
,它会自动识别。