記一次用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連接池;成功解決
原版本:
升級后:
注:該問題並不難解決,只是網上相關信息較少,幫助后來者少些彎路。