【調錯分享】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