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:yuanzhenhui@paohe.cn
* @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:yuanzhenhui@paohe.cn
* @date: 2017-12-6 下午3:01:34
* @return
*/
@Bean
public WallConfig wallConfig() {
WallConfig config = new WallConfig();
config.setMultiStatementAllow(true);// 允许一次执行多条语句
config.setNoneBaseStatementAllow(true);// 允许非基本语句的其他语句
return config;
}