互联网应用架构:专注编程教学,架构,JAVA,Python,微服务,机器学习等领域,欢迎关注,一起学习。很不巧,今天在工作的时候有一位同事又遇到了这种问题,好熟悉的问题。

在几天前做项目的时候就发现了这种问题,但是忘了怎么解决,今天又遇见了,那就好好来分析一下这是怎么回事。
环境说明
数据库:mysql
操作工具:mybatis,mybatis-plus,druid,P6Spy
问题查找
从错误直观分析是显示数据库类型不支持,为null,那为什么以前没用P6Spy不会出现这种情况,初步判断是P6Spy进行代理的时候出了问题,接着看错误代码显示是WallFilter出现了问题,那这个时候就好找了,直接进入到该类里面,发现以下代码


else if (rawUrl.startsWith("jdbc:mysql:") || rawUrl.startsWith("jdbc:cobar:")
|| rawUrl.startsWith("jdbc:log4jdbc:mysql:")) {
return MYSQL;问题的根据找到了,druid从url的前缀获取dbType,但是我们现在的url变成了这样子,咱们的前缀被我们采用P6Spy进行了代理,所以获取不到了
jdbc:p6spy:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false问题解决
既然是WallFilter出现了问题,那我们直接解决掉这个WallFilter即可
替换前:
filter-class-names:stat,slf4j,wall
替换后:
filter-class-names:stat,slf4j
--END--
作者:@互联网应用架构
原创作品,抄袭必究
如需要源码,转发,关注后私信我
部分图片或代码来源网络,如侵权请联系删除,谢谢!
版权声明:本文为u011818862原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。