Caused by: java.sql.SQLException: sql injection violation, syntax error: ERROR. token : QUESBAR, pos

错误:

先上错误信息,找了很久,一直怀疑是 like '%'||?||'%' 中 || 的问题。

Caused by: com.alibaba.druid.sql.parser.ParserException: ERROR. token : QUESBAR, pos : 112
at com.alibaba.druid.sql.parser.SQLExprParser.primary(SQLExprParser.java:600)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleExprParser.primary(OracleExprParser.java:465)
at com.alibaba.druid.sql.parser.SQLExprParser.bitXor(SQLExprParser.java:111)
at com.alibaba.druid.sql.parser.SQLExprParser.multiplicative(SQLExprParser.java:163)
at com.alibaba.druid.sql.parser.SQLExprParser.additiveRest(SQLExprParser.java:1356)
at com.alibaba.druid.sql.parser.SQLExprParser.additive(SQLExprParser.java:1344)
at com.alibaba.druid.sql.parser.SQLExprParser.shift(SQLExprParser.java:1371)
at com.alibaba.druid.sql.parser.SQLExprParser.bitAnd(SQLExprParser.java:1249)
at com.alibaba.druid.sql.parser.SQLExprParser.bitOr(SQLExprParser.java:1263)
at com.alibaba.druid.sql.parser.SQLExprParser.relationalRest(SQLExprParser.java:1525)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleExprParser.relationalRest(OracleExprParser.java:973)
at com.alibaba.druid.sql.parser.SQLExprParser.exprRest(SQLExprParser.java:102)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleExprParser.exprRest(OracleExprParser.java:1103)
at com.alibaba.druid.sql.parser.SQLExprParser.expr(SQLExprParser.java:91)
at com.alibaba.druid.sql.parser.SQLExprParser.primary(SQLExprParser.java:208)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleExprParser.primary(OracleExprParser.java:465)
at com.alibaba.druid.sql.parser.SQLExprParser.bitXor(SQLExprParser.java:111)
at com.alibaba.druid.sql.parser.SQLExprParser.multiplicative(SQLExprParser.java:163)
at com.alibaba.druid.sql.parser.SQLExprParser.additive(SQLExprParser.java:1343)
at com.alibaba.druid.sql.parser.SQLExprParser.shift(SQLExprParser.java:1371)
at com.alibaba.druid.sql.parser.SQLExprParser.bitAnd(SQLExprParser.java:1249)
at com.alibaba.druid.sql.parser.SQLExprParser.bitOr(SQLExprParser.java:1263)
at com.alibaba.druid.sql.parser.SQLExprParser.equality(SQLExprParser.java:1278)
at com.alibaba.druid.sql.parser.SQLExprParser.relational(SQLExprParser.java:1450)
at com.alibaba.druid.sql.parser.SQLExprParser.andRest(SQLExprParser.java:1408)
at com.alibaba.druid.sql.parser.SQLExprParser.exprRest(SQLExprParser.java:104)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleExprParser.exprRest(OracleExprParser.java:1103)
at com.alibaba.druid.sql.parser.SQLExprParser.expr(SQLExprParser.java:91)
at com.alibaba.druid.sql.parser.SQLSelectParser.expr(SQLSelectParser.java:540)
at com.alibaba.druid.sql.parser.SQLSelectParser.parseWhere(SQLSelectParser.java:260)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.query(OracleSelectParser.java:274)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.select(OracleSelectParser.java:81)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleStatementParser.parseStatementList(OracleStatementParser.java:131)
at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:79)
at com.alibaba.druid.wall.WallProvider.checkInternal(WallProvider.java:620)
at com.alibaba.druid.wall.WallProvider.check(WallProvider.java:574)
at com.alibaba.druid.wall.WallFilter.check(WallFilter.java:712)
... 104 common frames omitted

原因:

Druid版本:1.0.28、1.0.29、1.0.27都有这个问题

Caused by: java.sql.SQLException: sql injection violation, syntax error: ERROR. token : QUESBAR, pos : 112 : select count(brand0_.bid) as col_0_0_ from qm_brand brand0_ where brand0_.cmid=? and (brand0_.bname like '%'||?||'%')
at com.alibaba.druid.wall.WallFilter.check(WallFilter.java:725)

换成1.0.30以后的版本就可以了,作者在1.0.30版本中已修复此问题

参考地址:https://github.com/alibaba/druid/issues/1663

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值