解决:java.lang.IllegalStateException: dbType not support : null
java.lang.IllegalStateException: dbType not support : null, url jdbc:p6spy:mysql://192.168.22.58:3306/english?autoReconnect=true&useSSL=false&characterEncoding=utf-8&serverTimezone=Asia/Sh
在配置数据库密码加密时,参照网上资料修改了配置文件中关于filter部分,启动项目报错。
druid:
#就是它↓
filters: config,wall,stat
报错信息:
java.lang.IllegalStateException: dbType not support : null, url
jdbc:p6spy:mysql://192.168.22.58:3306/english?autoReconnect=true&useSSL=false&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true
at com.alibaba.druid.wall.WallFilter.init(WallFilter.java:159)
~[druid-1.1.10.jar:1.1.10]
原因:
1.上面的配置方式,WallFilter没有指定dbtype,WallFilter初始化时找不到匹配的dbType抛出异常。
2.dbType为null的原因为,项目中使用了P6Spy 框架,而且没有显示指定WallFilter的dbType。这一点在Druid文档中有作说明。
在WallFilter初始化时,如果dbtype为空,会根据jdbcURL获取(下图红框方法),但是因为配置了P6Spy ,Util里面没有jdbc:p6spy:mysql的匹配项,仍然返回null。
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
url: jdbc:p6spy:mysql://192.168.22.58:3306/english?autoReconnect=true&useSSL=false&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true
解决:
配置数据库密码加密根本不需要WallFilter和StatFilter,要解决这个问题,直接去掉配置文件中的stat和wall,或者为wallfilter指定dbType。
public-key: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAORbdAnZ/F9SwQ7REnScoKkDAQAPleBYkaLzTYCWxumG5Anc0PcQLKEDHLBqCFO3vwEAAQ==
druid:
filters: config
connection-properties: config.decrypt=true;config.decrypt.key=${public-key};
#其他配置省略
或者
druid:
filter:
config:
enabled: true
stat:
enabled: true
db-type: mysql
wall:
enabled: true
db-type: mysql
connection-properties: config.decrypt=true;config.decrypt.key=${public-key};
参考文档:https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE-wallfilter
关于WallFilter dbType的配置说明:
更多推荐
所有评论(0)