【调错分享】sql injection violation, syntax error: TODO TRIGGER trigger

记一次用java(JDBC) 创建ORACLE触发器错误。 sql injection violation, syntax error: TODO TRIGGER trigger
报错如下图所示

解决过程:
第一步:检查sql语句
将创建sql 放到plsql中执行,正确运行。触发器编译成功。
第二步:
根据打印的异常信息,发现是在druid.wall.WallFilter类中check方法抛出异常。
打断点debug查看跟踪源码,找到异常抛出的位置。

位段代码位于com.alibaba.druid.sql.parser.SQLStatementParser parseCreate()方法中。

因为创建触发器语句使用了 "CREATE OR REPLACE TRIGGER " 结合上图源码可得知:
该druid版本中只支持CREATE OR REPLACE PROCEDURE 和 CREATE OR REPLACE VIEW。于是怀疑druid版本过低不支持该格式语句。

升级最新版druid连接池;成功解决
原版本:
druid
1.0.29
升级后:
druid
1.2.6

注:该问题并不难解决,只是网上相关信息较少,帮助后来者少些弯路。

posted @ 2021-06-15 17:38  君子心怀天下  阅读(1954)  评论(0编辑  收藏  举报