当前位置:Gxlcms > 数据库问题 > 数据库连接池-配置 wallfilter问题解决-UncategorizedSQLException

数据库连接池-配置 wallfilter问题解决-UncategorizedSQLException

时间:2021-07-01 10:21:17 帮助过:14人阅读


### Error querying database. Cause: java.sql.SQLException: sql injection violation, syntax error: syntax error, expect RPAREN, actual IDENTIFIER ) : select nvl(sum(decode(fpztbz, ‘0‘,1, 0)),0) zcpfs, nvl(sum(decode(fpztbz, ‘1‘, 1, 0)),0) tpfs,
nvl(sum(decode(fpztbz, ‘0‘, 0, ‘1‘, 0, 1)),0) fpfs,
nvl(sum(decode(fpztbz,‘0‘, je ,0)),0) zcpje, nvl(sum(decode(fpztbz,‘0‘, se ,0)),0) zcpse,
nvl(sum(decode(fpztbz,‘1‘, je,0)),0) tpje , nvl(sum(decode(fpztbz,‘1‘, se,0)),0) tpse,
nvl(sum(decode(fpztbz,‘0‘, bzsje,0)),0) bzsje, nvl(sum(decode(fpztbz,‘1‘, bzsje, 0)),0) hpbzsje,
nvl(sum(decode(tspz,‘02‘,decode(fpztbz, ‘0‘, je, 0), 0)),0) sgfpje,
nvl(sum(decode(tspz,‘02‘,decode(fpztbz, ‘1‘, je, 0), 0)),0) hpsgje
from

cb_fp_zzspp_jb

...

解决办法,关闭语法检测-----StrictSyntaxCheck(false)

 

  1. wallConfig.setStrictSyntaxCheck(<span style="color: #0000ff;">false</span>);<span style="color: #008000;">//</span><span style="color: #008000;">是否进行严格的语法检测,Druid SQL Parser在某些场景不能覆盖所有的SQL语法,出现解析SQL出错,可以临时把这个选项设置为false,同时把SQL反馈给Druid的开发者。</span>

 

 

配置示例:

  1. <span style="color: #0000ff;">import</span><span style="color: #000000;"> com.alibaba.druid.filter.Filter;
  2. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> com.alibaba.druid.pool.DruidDataSource;
  3. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> com.alibaba.druid.support.http.StatViewServlet;
  4. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> com.alibaba.druid.support.http.WebStatFilter;
  5. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> com.alibaba.druid.wall.WallConfig;
  6. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> com.alibaba.druid.wall.WallFilter;
  7. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean;
  8. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.sql.SQLException;
  9. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.ArrayList;
  10. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.List;
  11. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> javax.sql.DataSource;
  12. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.slf4j.Logger;
  13. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.slf4j.LoggerFactory;
  14. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.beans.factory.annotation.Autowired;
  15. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.beans.factory.annotation.Value;
  16. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.boot.web.servlet.FilterRegistrationBean;
  17. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.boot.web.servlet.ServletRegistrationBean;
  18. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.context.annotation.Bean;
  19. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.context.annotation.Configuration;
  20. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.context.annotation.DependsOn;
  21. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.core.io.support.PathMatchingResourcePatternResolver;
  22. </span><span style="color: #008000;">/**</span><span style="color: #008000;">
  23. * ClassName: DruidConfig <br>
  24. * Function: Druid连接池初始化 <br>
  25. * </span><span style="color: #808080;">@version</span><span style="color: #008000;">
  26. * </span><span style="color: #808080;">@since</span><span style="color: #008000;"> JDK 1.8
  27. </span><span style="color: #008000;">*/</span><span style="color: #000000;">
  28. @Configuration
  29. </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> DruidConfig {
  30. </span><span style="color: #0000ff;">private</span> Logger logger = LoggerFactory.getLogger(DruidConfig.<span style="color: #0000ff;">class</span><span style="color: #000000;">);
  31. @Value(</span>"${spring.datasource.url}"<span style="color: #000000;">)
  32. </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> String dbUrl;
  33. @Value(</span>"${spring.datasource.username}"<span style="color: #000000;">)
  34. </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> String username;
  35. @Value(</span>"${spring.datasource.password}"<span style="color: #000000;">)
  36. </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> String password;
  37. @Value(</span>"${spring.datasource.driverClassName}"<span style="color: #000000;">)
  38. </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> String driverClassName;
  39. @Value(</span>"${spring.datasource.initialSize}"<span style="color: #000000;">)
  40. </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">int</span><span style="color: #000000;"> initialSize;
  41. @Value(</span>"${spring.datasource.minIdle}"<span style="color: #000000;">)
  42. </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">int</span><span style="color: #000000;"> minIdle;
  43. @Value(</span>"${spring.datasource.maxActive}"<span style="color: #000000;">)
  44. </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">int</span><span style="color: #000000;"> maxActive;
  45. @Value(</span>"${spring.datasource.maxWait}"<span style="color: #000000;">)
  46. </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">int</span><span style="color: #000000;"> maxWait;
  47. @Value(</span>"${spring.datasource.timeBetweenEvictionRunsMillis}"<span style="color: #000000;">)
  48. </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">int</span><span style="color: #000000;"> timeBetweenEvictionRunsMillis;
  49. @Value(</span>"${spring.datasource.minEvictableIdleTimeMillis}"<span style="color: #000000;">)
  50. </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">int</span><span style="color: #000000;"> minEvictableIdleTimeMillis;
  51. @Value(</span>"${spring.datasource.validationQuery}"<span style="color: #000000;">)
  52. </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> String validationQuery;
  53. @Value(</span>"${spring.datasource.testWhileIdle}"<span style="color: #000000;">)
  54. </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">boolean</span><span style="color: #000000;"> testWhileIdle;
  55. @Value(</span>"${spring.datasource.testOnBorrow}"<span style="color: #000000;">)
  56. </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">boolean</span><span style="color: #000000;"> testOnBorrow;
  57. @Value(</span>"${spring.datasource.testOnReturn}"<span style="color: #000000;">)
  58. </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">boolean</span><span style="color: #000000;"> testOnReturn;
  59. @Value(</span>"${spring.datasource.filters}"<span style="color: #000000;">)
  60. </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> String filters;
  61. @Value(</span>"${mybatis-plus.mapper-locations}"<span style="color: #000000;">)
  62. </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> String mapperLocations;
  63. @Autowired
  64. WallFilter wallFilter;
  65. @Bean
  66. </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> ServletRegistrationBean druidServlet() {
  67. ServletRegistrationBean reg </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> ServletRegistrationBean();
  68. reg.setServlet(</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> StatViewServlet());
  69. reg.addUrlMappings(</span>"/druid/*"<span style="color: #000000;">);
  70. reg.addInitParameter(</span>"loginUsername"<span style="color: #000000;">, username);
  71. reg.addInitParameter(</span>"loginPassword"<span style="color: #000000;">, password);
  72. </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> reg;
  73. }
  74. @Bean
  75. </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> FilterRegistrationBean filterRegistrationBean() {
  76. FilterRegistrationBean filterRegistrationBean </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> FilterRegistrationBean();
  77. filterRegistrationBean.setFilter(</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> WebStatFilter());
  78. filterRegistrationBean.addUrlPatterns(</span>"/*"<span style="color: #000000;">);
  79. filterRegistrationBean
  80. .addInitParameter(</span>"exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"<span style="color: #000000;">);
  81. filterRegistrationBean.addInitParameter(</span>"profileEnable", "true"<span style="color: #000000;">);
  82. </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> filterRegistrationBean;
  83. }
  84. @Bean
  85. </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> DataSource druidDataSource() {
  86. DruidDataSource datasource </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> DruidDataSource();
  87. datasource.setUrl(dbUrl);
  88. datasource.setUsername(username);
  89. datasource.setPassword(password);
  90. datasource.setDriverClassName(driverClassName);
  91. datasource.setInitialSize(initialSize);
  92. datasource.setMinIdle(minIdle);
  93. datasource.setMaxActive(maxActive);
  94. datasource.setMaxWait(maxWait);
  95. datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
  96. datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
  97. datasource.setValidationQuery(validationQuery);
  98. datasource.setTestWhileIdle(testWhileIdle);
  99. datasource.setTestOnBorrow(testOnBorrow);
  100. datasource.setTestOnReturn(testOnReturn);
  101. </span><span style="color: #008000;">//</span><span style="color: #008000;"> filter</span>
  102. List<Filter> filterArrayList = <span style="color: #0000ff;">new</span> ArrayList<><span style="color: #000000;">();
  103. filterArrayList.add(wallFilter);
  104. datasource.setProxyFilters(filterArrayList);
  105. </span><span style="color: #0000ff;">try</span><span style="color: #000000;"> {
  106. datasource.setFilters(filters);
  107. } </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (SQLException e) {
  108. logger.error(</span>"druid configuration initialization filter"<span style="color: #000000;">, e);
  109. }
  110. </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> datasource;
  111. }
  112. @Bean(name </span>= "wallFilter"<span style="color: #000000;">)
  113. @DependsOn(</span>"wallConfig"<span style="color: #000000;">)
  114. </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> WallFilter wallFilter(WallConfig wallConfig) {
  115. WallFilter wallFilter </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> WallFilter();
  116. wallFilter.setConfig(wallConfig);
  117. </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> wallFilter;
  118. }
  119. @Bean(name </span>= "wallConfig"<span style="color: #000000;">)
  120. </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> WallConfig wallConfig() {
  121. WallConfig wallConfig </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> WallConfig();
  122. wallConfig.setMultiStatementAllow(</span><span style="color: #0000ff;">true</span>);<span style="color: #008000;">//</span><span style="color: #008000;">允许一次执行多条语句</span>
  123. wallConfig.setNoneBaseStatementAllow(<span style="color: #0000ff;">true</span>);<span style="color: #008000;">//</span><span style="color: #008000;">允许一次执行多条语句</span>
  124. wallConfig.setStrictSyntaxCheck(<span style="color: #0000ff;">false</span>);<span style="color: #008000;">//</span><span style="color: #008000;">是否进行严格的语法检测,Druid SQL Parser在某些场景不能覆盖所有的SQL语法,出现解析SQL出错,可以临时把这个选项设置为false,同时把SQL反馈给Druid的开发者。</span>
  125. <span style="color: #0000ff;">return</span><span style="color: #000000;"> wallConfig;
  126. }
  127. }</span>

 

数据库连接池-配置 wallfilter问题解决-UncategorizedSQLException

标签:enable   public   Nid   state   tween   matching   database   初始   问题   

人气教程排行