问题就出在druid连接池上,连接池在执行完了某一条错误的sql以后,报错信息会被保存在执行sql的线程中,当下一条拿到这个线程的sql执行时,就直接报错,而不会去执行sql。
最终的解决方法就是解决那条问题线程,肯定是哪里出错才会保留报错信息,或者升级druid的版本。
1、可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。2、数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。
3、SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。
4、扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter机制,很方便编写JDBC层的扩展插件。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)