异常:
Error updating database. Cause: java.sql.SQLException: sql injection violation, dbType mysql, druid-version 1.2.3, multi-statement not allow : update xxx
原因:Druid的防火墙配置(Wall)中变量multiStatementAllow默认为false,导致被拦截
解决:
第一步:添加自定义配置WallFilter
@Configuration
public class DruidConfig {
/**
* 配置允许批量SQL
* @return
*/
@Bean
public WallFilter wallFilter() {
WallFilter wallFilter = new WallFilter();
wallFilter.setConfig(wallConfig());
return wallFilter;
}
@Bean
public WallConfig wallConfig() {
WallConfig config = new WallConfig();
//允许一次执行多条语句
config.setMultiStatementAllow(true);
//允许非基本语句的其他语句
config.setNoneBaseStatementAllow(true);
return config;
}
}
第二步:JDBC配置中添加 allowMultiQueries=true
例子:jdbc:mysql://xxx:3306/xxx?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&autoReconnect=true&serverTimezone=Asia/Shanghai&allowMultiQueries=true