问题现象

客户的java日志中有如下异常信息:

问题的风险及影响

对正常的业务流程无影响,但是影响druid的merge sql功能(此功能会将sql语句中的字面量替换为绑定变量,然后将替换以后的sql视为同一个,然后用做执行性能统计)

问题影响的版本

与yashandb版本无关

问题发生原因

druid源码中在merge sql时会调用ParameterizedOutputVisitorUtils.parameterize(sql, null, null, null, null);此方法的第二个参数为dbType,此时传入为null,解析时不识别递归查询中的start关键字,因而抛出异常。

解决方法及规避方式

由于此异常对正常的业务流程无影响,忽略此异常或者关闭merge sql功能即可(设置spring.datasource.druid.filter.stat.mergeSql=false)

问题分析和处理过程

spring+druid连接池初始化时,要指定dbtype属性(由参数spring.datasource.druid.dbType指定)。但是druid目前不支持yashan,此参数的值又不能写成oracle。如果写成oracle,启动时会有如下异常:

所以,spring.datasource.druid.dbType的值就要设置为空或者YaShanDB。

无论设置为哪种,druid在merge sql的时候,都会进入dbType=null的分支,此时ParameterizedOutputVisitorUtils.parameterize方法就会抛出token IDENTIFIER start异常。

而此方法在dbType=oracle的时候,可以正常解析,不会抛出异常。但是由于druid支持的原因,我们无法在jvm进程启动时通过配置达到如下效果。

经验总结

如下为一个可以直接运行的springboot + druid + yashandb demo:

druid_test.zip

【YashanDB知识库】yasdb jdbc驱动集成druid连接池,业务(java)日志中有token IDENTIFIER start异常的更多相关文章

  1. springboot集成druid连接池

    使用druid连接池主要有几步: 1.添加jar和依赖 <groupId>org.mybatis.spring.boot</groupId> <artifactId> ...

  2. java基础之JDBC八:Druid连接池的使用

    基本使用代码: /** * Druid连接池及简单工具类的使用 */ public class Test{ public static void main(String[] args) { Conne ...

  3. SpringBoot2.0 基础案例(07):集成Druid连接池,配置监控界面

    一.Druid连接池 1.druid简介 Druid连接池是阿里巴巴开源的数据库连接池项目.Druid连接池为监控而生,内置强大的监控功能,监控特性不影响性能.功能强大,能防SQL注入,内置Login ...

  4. Spring系列之集成Druid连接池及监控配置

    前言 前一篇文章我们熟悉了HikariCP连接池,也了解到它的性能很高,今天我们讲一下另一款比较受欢迎的连接池:Druid,这是阿里开源的一款数据库连接池,它官网上声称:为监控而生!他可以实现页面监控 ...

  5. Druid连接池配置(java无框架)

    连接池是一个对数据库连接进行管理的东西,当一个线程需要用 JDBC 对 数据库操作时,它从池中请求一个连接.当这个线程使用完了这个连接,将它返回到连接池中,这样这就可以被其它想使用它的线程使用,而不是 ...

  6. spring boot配置druid连接池连接mysql

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  7. springboot 学习之路 6(集成durid连接池)

    目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...

  8. 使用MyBatis集成阿里巴巴druid连接池(不使用spring)

    在工作中发现mybatis默认的连接池POOLED,运行时间长了会报莫名其妙的连接失败错误.因此采用阿里巴巴的Druid数据源(码云链接 ,中文文档链接). mybatis更多数据源参考博客链接 . ...

  9. Jar程序使用MyBatis集成阿里巴巴druid连接池

    在写jar程序,而不是web程序的时候,使用mybatis作为持久层,可以集成POOLED连接池,而阿里的druid不能用,确实很郁闷.不过有办法. 首先准备好数据库配置文件 然后对Druid进行一个 ...

  10. Spring整合JDBC和Druid连接池

    我的博客名为黑客之谜,喜欢我的,或者喜欢未来的大神,点一波关注吧!顺便说一下,双十二快到了,祝大家双十二快乐,尽情的买买买~ 如果转载我的文章请标明出处和著名,谢谢配合. 我的博客地址为: https ...

随机推荐

  1. VulnHub-DC-7渗透流程

    DC-7 kali:192.168.157.131 靶机:192.168.157.151 信息收集 nmap -sV -A -p- 192.168.157.151 虽然有robots.txt等敏感文件 ...

  2. 大一新生的作业(洛谷P1150,1035,1075)

    本帖背景:此帖讲解大一新生团队作业 截止日期10-31 17:09 P1150(Peter的烟) 算法简介 本题主要考察的是模拟算法 模拟算法一般考察一些比较基础的题目,它将生活中的实例融合到了编程题 ...

  3. wails实现腾讯元器bot

    简单记录工具的一个模块 后端 Api调用 登录 腾讯元器 后创建智能体,按自己的需求来创建,发布后要等等审核. ​​ 等发布完成后点击调用api即可,这里可以看到user_id​, assistant ...

  4. 对比`Pinia `和` Vuex`,全面了解` Vue`状态管理

    Pinia和Vuex一样都是是vue的全局状态管理器.其实Pinia就是Vuex5,只不过为了尊重原作者的贡献就沿用了这个看起来很甜的名字Pinia. 本文将通过Vue3的形式对两者的不同实现方式进行 ...

  5. ComfyUI进阶:Comfyroll插件 (六)

    ComfyUI进阶:Comfyroll插件 (六) 前言: 学习ComfyUI是一场持久战,而Comfyroll 是一款功能强大的自定义节点集合,专为 ComfyUI 用户打造,旨在提供更加丰富和专业 ...

  6. JMeter Sampler-http请求之KeepAlive使用总结

    Sampler-http请求之KeepAlive使用总结 测试环境 apache-jmeter-2.13 KeepAlive使用介绍 说明: 1.Use KeepAlive 勾上,则表示为求连接设置请 ...

  7. 【Vue】02 Component 组件 & Axios

    Vue自定义组件: 不论任何注册组件的方式:template属性有且仅有一个根节点标签 就是说模版属性的标签只能有一个在最外面 <div id="container-element&q ...

  8. 【Zookeeper】03 单机操作

    访问Zookeeper 开启Zookeeper服务程序: ./zkServer.sh start 启动Zookeeper客户端进行访问: ./zkCli.sh 运行打印: [root@VM-0-7-c ...

  9. 【Spring】08 后续的学习补充 vol2

    1.[纯注解配置实现] 首先实现纯注解配置的第一件事情就是删除XML文件 然后编写一个类用于代替XML文件实现配置功能: 使用@Configuration将这个类注册为Spring容器 使用@Comp ...

  10. JavaWeb入门到实战学习笔记

    了解,讲得并不是很好,很展开. 概念 动态web Web服务器 web服务器这节也是蜻蜓点水,引出tomcat而已 ASP(C#语言,微软) JSP PHP Java bootstrapclasslo ...