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

来源:互联网 发布:mac 电源适配器 编辑:程序博客网 时间:2024/05/15 23:43
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;}@Beanpublic WallFilter wallFilter(){    WallFilter wallFilter=new WallFilter();    wallFilter.setConfig(wallConfig());    return  wallFilter;}@Beanpublic WallConfig wallConfig(){    WallConfig config =new WallConfig();    config.setMultiStatementAllow(true);//允许一次执行多条语句    config.setNoneBaseStatementAllow(true);//允许非基本语句的其他语句    return config;}



阅读全文
0 0
原创粉丝点击