解決:java.lang.IllegalStateException: dbType not support : null

在配置數據庫密碼加密時,參照網上資料修改了配置文件中關於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的配置說明:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章