Druid中 SQL包含INTERVAL 会直接抛异常 token INTERVAL

博客记录了Druid的StatFilter - merge sql报错问题,报错信息为com.alibaba.druid.sql.parser.ParserException。即便给interval加反单引号仍报错。解决办法是在配置里把statFilter的mergeSql功能关掉,将connectionProperties中的mergeSql=true改为false。

转载: https://ask.youkuaiyun.com/questions/7408770 

查询近一个月总数sql,mapper如下:
<select id="countMonthExp" parameterType="com.hky.domain.Experience"
resultType="java.lang.Integer">
select COUNT(1) from TB_EXPERIENCE exp
where exp.creatdate>DATE_SUB(CURDATE(), interval 1 MONTH)
and exp.cstatus = 1
</select>

报错信息如下:

dastudy- 2021-03-22 17:30:29 [http-nio-8000-exec-5] ERROR c.a.druid.filter.stat.StatFilter - merge sql error, dbType com.alibaba.druid.pool.DruidDataSource, druid-1.1.22, sql : select
        COUNT(1) res
        from TB_EXPERIENCE exp
        where exp.creatdate>DATE_SUB(CURDATE(), interval 1 MONTH)
        and exp.cstatus = 1
com.alibaba.druid.sql.parser.ParserException: TODO. pos 97, line 4, column 43, token INTERVAL

如果interval加反单引号,依旧会报错,提示sql错了。

换种写法传个值过来,可以解决,但是想知道如果想要用这个关键字,要怎么做呢?

 解答:

看报错是 Duird 的 StatFilter - merge sql 时出错了,可以在配置里把 statFilter 的 mergeSql 功能关掉, 参考官方文档:https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatFilter

Druid内置提供一个StatFilter,用于统计监控信息。(durid 会提供一个监控界面,这个StatFilter 会提供监控界面的统计数据,开启关闭对本身程序不会影响) 

springboot 开启监控界面 配置

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
      useGlobalDataSourceStat: true
      # 开启了  druid 监控界面
      stat-view-servlet:
        enabled: true
        login-username: druid
        login-password: druid
        url-pattern: /druid/*

关闭监控统计
把  connectionProperties: druid.stat.mergeSql=true; 

mergeSql=true 改为 false 即可。

 

另一篇文章记录此问题:

链接:https://blog.youkuaiyun.com/T_emmmm/article/details/106217683

拼接SQL 报了这个异常 但不影响结果的返回 记录一下!!!

[mergeSql,149] - merge sql error, dbType oracle, druid-1.1.14, sql : ··· ···
com.alibaba.druid.sql.parser.ParserException: error, pos 355, line 1, column 355, token STAR


把 merge-sql : true 改为false 目前没其他办法。。。

在这里插入图片描述

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值