alibaba / druid

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

1.1.10版本Druid SQL SQL监控页面不显示Sql,请问是内部版本bug? #2743

Open yonghu86 opened 6 years ago

yonghu86 commented 6 years ago

druid-1.1.10版本Druid SQL SQL监控页面不显示Sql,其他页面是正常的,请问是内部版本bug? 以前用的1.0.20版本是正常的,数据库是sqlserver2014

浏览器F12控制台抛出的错误是: sql.html:146 Uncaught TypeError: Cannot read property 'replace' of null at Object.handleAjaxResult [as handleCallback] (sql.html:146) at Object.handleAjaxResult (common.js:143) at Object.success (common.js:153) at k (jquery.min.js:2) at Object.fireWith [as resolveWith] (jquery.min.js:2) at y (jquery.min.js:2) at XMLHttpRequest.d (jquery.min.js:2)

通过监控页面:sql.html的代码,错误问题在这个文件的146行: var stat = sqlStatList[i], statSQL=stat.SQL; var newStatSQL=statSQL.replace(/\"/g,"'"); 如果statSQL为空,执行replace方法就会报错了,望后台修改下,辛苦了。

Yangperlove commented 6 years ago

请问最后解决方法是修改sql.html吗, 还是其他的配置问题?@yonghu86

yonghu86 commented 6 years ago

请问最后解决方法是修改sql.html吗, 还是其他的配置问题?@yonghu86

暂时没有解决呀,坐等官网的更新版本处理。

diaodiaofly commented 5 years ago

解决了么 1.1.10 出现同样问题 url监控、spring监控、session监控正常 就sql监控没有数据

yonghu86 commented 5 years ago

解决了么 1.1.10 出现同样问题 url监控、spring监控、session监控正常 就sql监控没有数据

还是没有解决,这最基本的 bug搞不清楚为啥都没有处理。

bangq commented 5 years ago

同样的问题

ettingshausen commented 5 years ago

@wenshao 1.1.18 同样有这个问题

yonghu86 commented 5 years ago

官方就没人处理这么低级的错?也没调试?这么长时间了bug还在

chrzha commented 4 years ago

首先我用的是springboot 2.1.7 + druid 1.1.9也出现同样的问题,sql的监控出不来。 然后参考了这篇文章: https://blog.csdn.net/h378588270/article/details/99593122 其中要注意的是:

  1. druid依赖: ` com.alibaba
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.1.17</version>
    </dependency>`
  2. yaml配置的结构,注意druid节点。

PS: 解决完之后才发现官方有个springboot的配置说明 https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter

p555iii commented 4 years ago

同样这个问题 1.1.21版本druid 无法显示 sql 监控页面 ,切回1.0.20后恢复正常,什么时候发布新版本哦

ettingshausen commented 4 years ago

同样这个问题 1.1.21版本druid 无法显示 sql 监控页面 ,切回1.0.20后恢复正常,什么时候发布新版本哦

@p555iii 加上过滤器试一下:

spring:
  datasource:
    druid:
      stat-view-servlet:
        enabled: true
      filters: stat,wall,slf4j 
      validation-query: select 1
p555iii commented 4 years ago

同样这个问题 1.1.21版本druid 无法显示 sql 监控页面 ,切回1.0.20后恢复正常,什么时候发布新版本哦

@p555iii 加上过滤器试一下:

spring:
  datasource:
    druid:
      stat-view-servlet:
        enabled: true
      filters: stat,wall,slf4j 
      validation-query: select 1

我没有使用druid-spring-boot-starter 而是直接使用druid 也能这样写吗?我查看druid-spring-boot-starter的源码发现这些配置是在druid-spring-boot-starter中定义的

ettingshausen commented 4 years ago

同样这个问题 1.1.21版本druid 无法显示 sql 监控页面 ,切回1.0.20后恢复正常,什么时候发布新版本哦

@p555iii 加上过滤器试一下:

spring:
  datasource:
    druid:
      stat-view-servlet:
        enabled: true
      filters: stat,wall,slf4j 
      validation-query: select 1

我没有使用druid-spring-boot-starter 而是直接使用druid 也能这样写吗?我查看druid-spring-boot-starter的源码发现这些配置是在druid-spring-boot-starter中定义的

@p555iii spring-boot 和传统的 spring 项目都有在用,SQL监控页面都正常。 如果是普通Web项目在尝试web.xml中添加一下内容:

<filter>
    <filter-name>DruidWebStatFilter</filter-name>
    <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
    <init-param>
        <param-name>exclusions</param-name>
        <param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,*.jsp,/druid/*,/download/*</param-value>
    </init-param>
    <init-param>
        <param-name>sessionStatMaxCount</param-name>
        <param-value>2000</param-value>
    </init-param>
    <init-param>
        <param-name>sessionStatEnable</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>principalSessionName</param-name>
        <param-value>session_user_key</param-value>
    </init-param>
    <init-param>
        <param-name>profileEnable</param-name>
        <param-value>true</param-value>
    </init-param>
</filter><filter-mapping>
    <filter-name>DruidWebStatFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<!-- 配置 Druid 监控信息显示页面 -->
<servlet>
    <servlet-name>DruidStatView</servlet-name>
    <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
    <init-param>
        <!-- 允许清空统计数据 -->
        <param-name>resetEnable</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <!-- 用户名 -->
        <param-name>loginUsername</param-name>
        <param-value>druid</param-value>
    </init-param>
    <init-param>
        <!-- 密码 -->
        <param-name>loginPassword</param-name>
        <param-value>password</param-value>
    </init-param>
</servlet><servlet-mapping>
    <servlet-name>DruidStatView</servlet-name>
    <url-pattern>/druid/*</url-pattern>
</servlet-mapping>
p555iii commented 4 years ago

@ettingshausen 感谢,我切换到druid 1.1.0 一切正常了。。其他版本要不是sql监控无法使用 要不是sql 防火墙无法使用。 还是希望官方在未来版本中修复。

gundamff commented 4 years ago

出问题的是没有配置validationQuery 加上就好了....

mwylaoma commented 4 years ago

嗯,需要用代码配置datasource.setValidationQuery("select 1");