【Spring Boot】啓動執行activiti時數據庫報錯解決辦法

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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章