springboot druid 数据库批量更新错误 multi-statement not allow

springboot druid 数据库多SQL错误 multi-statement not allow
Caused by: java .sql.SQLException : sql injection violation, multi-statement not allow  com .alibaba.druid.wall.WallFilter.check (WallFilter .java : 714 )      at  com .alibaba.druid.wall.WallFilter.connection _prepareStatement(WallFilter .java : 240 )      at  com .alibaba.druid.filter.FilterChainImpl.connection _prepareStatement(FilterChainImpl .java : 448 )      at  com .alibaba.druid.filter.FilterAdapter.connection _prepareStatement(FilterAdapter .java : 928 )      at  com .alibaba.druid.filter.FilterEventAdapter.connection _prepareStatement(FilterEventAdapter .java : 122 )      at  com .alibaba.druid.filter.FilterChainImpl.connection _prepareStatement(FilterChainImpl .java : 448 )      at  com .alibaba.druid.proxy.jdbc.ConnectionProxyImpl.prepareStatement (ConnectionProxyImpl .java : 342 )      at  com .alibaba.druid.pool.DruidPooledConnection.prepareStatement (DruidPooledConnection .java : 318 )  

解决方案:
1、配置数据库连接,添加allowMultiQueries=true
jdbc.url=jdbc:mysql: //localhost:3306/test?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8   

2、如果需要开启wall监控,同时允许multiStatementAllow,就不要在application.yml中配置filter,自己定义
//使用连接池dataSource
@Bean
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource dataSource() {
    DruidDataSource druidDataSource = new DruidDataSource();
    List<Filter> filterList=new ArrayList<>();
    filterList.add(wallFilter());
    druidDataSource.setProxyFilters(filterList);
    return druidDataSource;
}

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值