【调错分享】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

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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM