问题现象

客户的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. 对于 vue3.0 特性你有什么了解的吗?

    Vue 3.0 的目标是让 Vue 核心变得更小.更快.更强大,因此 Vue 3.0 增加以下这些新特性: (1)监测机制的改变3.0 将带来基于代理 Proxy 的 observer 实现,提供全语 ...

  2. PixiJS源码分析系列: 第一章 从最简单的例子入手

    从最简单的例子入手分析 PixiJS 源码 我一般是以使用角度作为切入点查看分析源码,例子中用到什么类,什么方法,再入源码. 高屋建瓴的角度咱也做不到啊,毕竟水平有限 pixijs 的源码之前折腾了半 ...

  3. 类、事件与对象---Dad&Mom简单练习

    目的: 模拟一个家庭日常发生的场景:妈妈做好饭,说:"开饭了!",这是爸爸听到了妈妈的喊话就立马动身开始饭吃.而儿子此时正在打游戏,于是他就说:"等我打完这把游戏再吃!& ...

  4. adorner 使用示例

    模块介绍 adorner 是一个现代轻量级的 Python 装饰器辅助模块. 目前该模块仅实现了 4 个类,对应着 4 个功能:制造装饰器.执行计时.函数缓存.捕获重试. 仓库地址:https://g ...

  5. java面试一日一题:在创建微服务时,是用RPC还是http

    问题:请讲下在做微服务时,是使用RPC还是http 分析:该问题主要考察对RCP及http的理解,也关系到在进行微服务选型时的两大方向,dubbo和springCloud,都是RPC框架,但前者是RP ...

  6. WordPress基础之基本SEO设置

    基础内容,不会涉及过深,在谷歌SEO教程中会做详细的介绍,我这里只简单讲下. 1. SEO介绍 SEO,又名搜索引擎优化(Search Engine Optimization,缩写为SEO)是透过了解 ...

  7. 2023年最新ios证书申请流程

    做过前端多端开发的朋友们都知道,hbuilderx或apicloud这些开发工具的uniapp框架可以开发ios应用,使用他们的云打包即可. 云打包的时候需要一个私钥证书和一个profile文件,这两 ...

  8. 【Hibernate】Re01.6 HQL

    一.支持的查询方式 Hibernate的查询支持三种方式: 1.HQL查询 2.Criteria查询 3.NativeSQL 原生SQL查询 二.HQL查询语言 全称 Hibernate Query ...

  9. 从.net开发做到云原生运维(七)——服务网格Istio

    1. 前言 上篇文章我们讲了dapr,dapr作为开发阶段使用的组件,需要开发人员知道怎么使用,到此篇文章之前,开发人员的开发任务已经完成了,剩下的就是一些运维相关的事情了.假设我们的服务已经开发完成 ...

  10. 2018年视频,路径规划:层次化路径规划系统——hierarchical pathfinding system —— Hierarchical Dynamic Pathfinding for Large Voxel Worlds (续)

    前文: 2018年视频,路径规划:层次化路径规划系统--hierarchical pathfinding system -- Hierarchical Dynamic Pathfinding for ...