使用springboot然后添加mybatis-plus,添加阿里druid来做连接,采用了多数据源进行配置dynamic-datasource-spring-boot-starter然后就出现其中个别问题:多数据源抛出dbType not support : sqlite异常。
issue添加
https://gitee.com/baomidou/dynamic-datasource-spring-boot-starter/issues/I1NLER
复制代码
【异常1】dbType not support异常排查处理
采用的是苞米豆baomidou基于 SpringBoot多数据源、动态数据源、主从分离、快速启动器 支持分布式事务。刚刚验证了数据库:mysql、mariadb、oracle、db2、h2、hsql、postgresql、sqlserver、sqlite,唯独在多数据源暂不支持sqlite 报错误,错误如下:
java.lang.IllegalStateException: dbType not support : sqlite, url jdbc:sqlite:D:/sqlite/database/db_demo.db
复制代码
排查的半天,上网也搜寻了,就是说防火墙别开启。打开PSCache,并且指定每个连接上PSCache的大小(防火墙这一块一定不能开,sqlite不支持,会导致奇怪的异常)。配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙(启动sqlite时候需要关闭wall)。把filters中的stat,wall,slf4j改成stat,slf4j
# 连接池的配置信息 DRUID POOL Congif
# 全局druid参数,绝大部分值和默认保持一致。(现已支持的参数如下,不清楚含义不要乱设置)
# 初始化大小,最小,最大
spring.datasource.dynamic.druid.initial-size=5
spring.datasource.dynamic.druid.min-idle=5
spring.datasource.dynamic.druid.max-active=20
# 配置获取连接等待超时的时间
spring.datasource.dynamic.druid.max-wait=60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
spring.datasource.dynamic.druid.time-between-eviction-runs-millis=60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
spring.datasource.dynamic.druid.min-evictable-idle-time-millis=300000
#spring.datasource.dynamic.druid.validation-query=SELECT 1 FROM DUAL
spring.datasource.dynamic.druid.test-while-idle=true
spring.datasource.dynamic.druid.test-on-borrow=false
spring.datasource.dynamic.druid.test-on-return=false
# 打开PSCache,并且指定每个连接上PSCache的大小(防火墙这一块一定不能开,sqlite不支持,会导致奇怪的异常)
spring.datasource.dynamic.druid.pool-prepared-statements=true
spring.datasource.dynamic.druid.max-pool-prepared-statement-per-c