SpringBoot啓動的時候報瞭如下錯誤:
java.sql.SQLException: sql injection violation, syntax error: syntax error, error in :'cade on update cascade',expect ON, actual ON on : alter table ACT_RU_EXECUTION
add constraint ACT_FK_EXE_PROCINST
foreign key (PROC_INST_ID_)
references ACT_RU_EXECUTION (ID_) on delete cascade on update cascade
at com.alibaba.druid.wall.WallFilter.check(WallFilter.java:711) ~[druid-1.0.11.jar:1.0.11]
at com.alibaba.druid.wall.WallFilter.statement_execute(WallFilter.java:384) ~[druid-1.0.11.jar:1.0.11]
at com.alibaba.druid.filter.FilterChainImpl.statement_execute(FilterChainImpl.java:2487) ~[druid-1.0.11.jar:1.0.11]
at com.alibaba.druid.filter.FilterAdapter.statement_execute(FilterAdapter.java:2451) ~[druid-1.0.11.jar:1.0.11]
at com.alibaba.druid.filter.FilterEventAdapter.statement_execute(FilterEventAdapter.java:188) ~[druid-1.0.11.jar:1.0.11]
解決辦法
這是由於druid的wallfilter引起的,由於配置中用到的是內置的filter,所以要將內置filter的配置去掉。然後在代碼中直接換成自定義的wallfilter,如下所示:
/**
*
* @Description:自定義設置wallFilter
* @Author:[email protected]
* @date: 2017-12-6 下午3:01:13
* @return
*/
@Bean
public WallFilter wallFilter() {
WallFilter wallFilter = new WallFilter();
wallFilter.setConfig(wallConfig());
return wallFilter;
}
/**
*
* @Description:由於activiti查詢的時候有出現同時兩條語句一次執行的情況,所以自定義一個wallfilter
* @Author:[email protected]
* @date: 2017-12-6 下午3:01:34
* @return
*/
@Bean
public WallConfig wallConfig() {
WallConfig config = new WallConfig();
config.setMultiStatementAllow(true);// 允許一次執行多條語句
config.setNoneBaseStatementAllow(true);// 允許非基本語句的其他語句
return config;
}