为谁_疯狂 2021-03-22 17:38 采纳率: 0%
浏览 961
已结题

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

查询近一个月总数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错了。

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

  • 写回答

3条回答 默认 最新

  • 夏方方 2021-03-28 22:46
    关注

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

    其中的 【4. SQL合并配置】 部分介绍:

    <bean id="stat-filter" class="com.alibaba.druid.filter.stat.StatFilter">
    	<property name="mergeSql" value="false" />
    </bean>
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
    	init-method="init" destroy-method="close">
    	... ...
    	<property name="proxyFilters">
    		<list>
    			<ref bean="stat-filter" />
    		</list>
    	</property>
    </bean>
    
    评论

报告相同问题?

悬赏问题

  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向