解决springboot druid 数据库批量更新错误问题

Posted 起个名字好难

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决springboot druid 数据库批量更新错误问题相关的知识,希望对你有一定的参考价值。

原文:https://www.2cto.com/kf/201712/706399.html

 

springboot druid 数据库多SQL错误multi-statement not allow

Caused by: java.sql.SQLException: sql injection violation, multi-statement not allowcom.alibaba.druid.wall.WallFilter.check(WallFilter.java:714) atcom.alibaba.druid.wall.WallFilter.connection_prepareStatement(WallFilter.java:240) atcom.alibaba.druid.filter.FilterChainImpl.connection_prepareStatement(FilterChainImpl.java:448) atcom.alibaba.druid.filter.FilterAdapter.connection_prepareStatement(FilterAdapter.java:928) atcom.alibaba.druid.filter.FilterEventAdapter.connection_prepareStatement(FilterEventAdapter.java:122) atcom.alibaba.druid.filter.FilterChainImpl.connection_prepareStatement(FilterChainImpl.java:448) atcom.alibaba.druid.proxy.jdbc.ConnectionProxyImpl.prepareStatement(ConnectionProxyImpl.java:342) atcom.alibaba.druid.pool.DruidPooledConnection.prepareStatement(DruidPooledConnection.java:318)

解决方案:

1、配置数据库连接,添加allowMultiQueries=true

jdbc.url=jdbc:mysql://192.168.11.107:3306/alarm_db?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 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;

}

以上是关于解决springboot druid 数据库批量更新错误问题的主要内容,如果未能解决你的问题,请参考以下文章

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

SpringBoot+Mybatis+Druid批量更新 multi-statement not allow异常

Spring Boot 集成 Druid 批量插入数据和效率监控配置

Spring Boot 集成 Druid 批量插入数据和效率监控配置

Spring Boot 集成 Druid 批量插入数据和效率监控配置

druid DBMS_RANDOM报错