当前位置: 首页 > news >正文

spring mysql 自动重连_再淡spring jdbc 连接池断开重连设置

先看一段错误日志:

### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.

### The error may exist in file …………]

### The error may involve .....

### The error occurred while executing a query

### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.

; SQL []; No operations allowed after connection closed.; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.

这个是连接池断开后(网络、数据库断开)。没有确认池里的连接继续可用的情况下,去操作数据库。

网上一搜,解决的方法一大堆,基本配置例如以下:

但是,这就够了吗?

一開始放到自己的环境上是没实用的,还是报错了。

继续努力,最后是攻克了。

第一要理解连接池的各项配置(上面)

第二是要知道mysql中wait_timeout的设置

两点结合才干确定连接池在项目中的合理正确配置。

假设wait_timeout设置成非常大一个值,比如一年,那么上面的配置非常多情况下都是正确的。

假设wait_timeout设置成非常小,如1分钟,那么上面的配置是有问题的。

由于server1分钟就把空暇连接断开了,client过了5分钟再去检查连接情况,那有什么意义?先前就是没理解被误导了,把timeBetweenEvictionRunsMillis设置了一个比較大的值,所以一直有问题。包含所说的8小时问题也是源于此(mysql数据库默认是空暇8小时断开)。

我的原因是mysql的wait_timeout的值设置小了。而client检測的间隔时间过大。

正确的做法是:

连接池配置中的timeBetweenEvictionRunsMillis和

minEvictableIdleTimeMillis的

时间小于或者等于mysql数据库中wait_timeout的时间。

相关文章:

  • 终极恢复孰弱孰强-DUL vs AUL
  • jsp动态分页 mysql后台查询_JSP留言板系统(前台:游客增查+后台管理员:增删改查删回复+MVC+列表分页+MySQL)...
  • [领域]javascript hacking guide part 4
  • 导入csv 0的问题_解决:MySQL workbench8.0 无法导入csv
  • 多态性——vptr和vtable
  • mysql建删改查_mysql 操作数据库创建,增删改查
  • python中wraps_python装饰器函数wraps
  • 什么是期货
  • mysql-sandbox_mysql-sandbox 安装
  • 常用股市术语
  • MySQL创建视图yggl_yggl数据库的创建
  • Linux中设定让Firefox可以运行Java程序,然后老爸就可以在家与“小白”决象棋了!...
  • python3 value counts函数_(python3)pandas做数据分析:统计相关函数
  • SP版本Windows Mobile Crossbow简短体验
  • python画三维几何图形拼成的图案_The discovery of oil _______ in an era of employment and prosperity....
  • @angular/forms 源码解析之双向绑定
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • Apache Spark Streaming 使用实例
  • Javascript 原型链
  • leetcode讲解--894. All Possible Full Binary Trees
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • mysql外键的使用
  • MySQL主从复制读写分离及奇怪的问题
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • use Google search engine
  • Vue 2.3、2.4 知识点小结
  • 从0到1:PostCSS 插件开发最佳实践
  • 分布式任务队列Celery
  • 汉诺塔算法
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 如何设计一个比特币钱包服务
  • 通过几道题目学习二叉搜索树
  • 微服务核心架构梳理
  • 译有关态射的一切
  • 自制字幕遮挡器
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • C# - 为值类型重定义相等性
  • 通过调用文摘列表API获取文摘
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .NET基础篇——反射的奥妙
  • .NET框架设计—常被忽视的C#设计技巧
  • /etc/skel 目录作用
  • @AutoConfigurationPackage的使用
  • [20171113]修改表结构删除列相关问题4.txt
  • [ajaxupload] - 上传文件同时附件参数值
  • [Android]一个简单使用Handler做Timer的例子
  • [BZOJ4566][HAOI2016]找相同字符(SAM)
  • [C++] sqlite3_get_table 的使用