alibaba / druid

阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html) 团队出品,为监控而生的数据库连接池
https://github.com/alibaba/druid/wiki
Apache License 2.0
27.9k stars 8.57k forks source link

sqlserver2008使用druid,页面【sql监控】功能报错。 #2817

Closed ShenGuangYang closed 6 years ago

ShenGuangYang commented 6 years ago

druid 开发者们、gtihub大神们,你们好!

错误信息

 我在使用druid集成到 我自己的项目,页面上【sql监控】功能报错,错误图片如下

页面报错信息sql.html 若看不到图片请访问该http://ov19xq7pe.bkt.clouddn.com/druiderror.png 提示的错误信息如下

java.lang.NullPointerException
    at com.alibaba.druid.wall.WallProvider.checkInternal(WallProvider.java:701)
    at com.alibaba.druid.wall.WallProvider.check(WallProvider.java:578)
    at com.alibaba.druid.wall.WallFilter.checkInternal(WallFilter.java:785)
    at com.alibaba.druid.wall.WallFilter.check(WallFilter.java:780)
    at com.alibaba.druid.wall.WallFilter.statement_execute(WallFilter.java:413)
    at com.alibaba.druid.filter.FilterChainImpl.statement_execute(FilterChainImpl.java:2956)
    at com.alibaba.druid.filter.FilterAdapter.statement_execute(FilterAdapter.java:2473)
    at com.alibaba.druid.filter.FilterEventAdapter.statement_execute(FilterEventAdapter.java:188)
    at com.alibaba.druid.filter.FilterChainImpl.statement_execute(FilterChainImpl.java:2956)
    at com.alibaba.druid.proxy.jdbc.StatementProxyImpl.execute(StatementProxyImpl.java:147)
    at com.alibaba.druid.pool.vendor.MSSQLValidConnectionChecker.isValidConnection(MSSQLValidConnectionChecker.java:50)
    at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1346)
    at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1633)
    at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2468)

配置信息

SpringBoot:2.0.5.RELEASE Jdk:1.8 druid版本:druid-spring-boot-starter 1.1.10 数据库:SQL Server 2008 R2 (SP3) - 10.50.6220.0 (X64) 配置文件:

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:sqlserver://localhost:1433;DatabaseName=***
    username: sa
    password: sa
    druid:
      validationQueryTimeout: 1
      validationQuery: select 1
      min-idle: 10
      web-stat-filter:
        url-pattern: /*
        exclusions: '*.gif,*.png,*.jpg,*.html,*.js,*.css,*.ico,/druid/*'
        enabled: true
      max-active: 20
      filters: stat,wall
      poolPreparedStatements: true
      max-wait: 10
      filter:
        stat:
          slow-sql-millis: 5000
          log-slow-sql: true
      maxPoolPreparedStatementPerConnectionSize: 20
      testWhileIdle: true
      testOnBorrow: false
      stat-view-servlet:
        url-pattern: /druid/*
        login-password: admin
        reset-enable: false
        login-username: admin
        enabled: true
      minEvictableIdleTimeMillis: 300000
      timeBetweenEvictionRunsMillis: 60000
      testOnReturn: false
      initial-size: 5
ChronosLiu commented 5 years ago

临时解决办法: 使用过滤器拦截/druid/sql.json 请求,修改响应数据,过滤掉响应结果 Content数组中SQL字段为NULL的,重新组合响应数据。