java mysql 自动重连_JDBC实现Mysql自动重连机制的方法详解

2023-11-04

前言

本文主要给大家介绍的是关于jdbc实现mysql自动重连机制的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍:

日志:using the connector/j connection property 'autoreconnect=true' to avoid this problem

com.mysql.jdbc.communicationsexception: the last packet successfully received from the server was58129 seconds ago.the last packet sent successfully to the server was 58129 seconds ago, which is longer than the server configured value of 'wait_timeout'. you should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the connector/j connection property 'autoreconnect=true' to avoid this problem.

查了一下,原来是mysql超时设置的问题

如果连接闲置8小时 (8小时内没有进行数据库操作), mysql就会自动断开连接, 要重启tomcat.

解决办法:

第一种:如果不用hibernate的话, 则在 connection url中加参数: autoreconnect=true

jdbc.url=jdbc:mysql://ipaddress:3306/database?autoreconnect=true&autoreconnectforpools=true

第二种:用hibernate的话, 加如下属性:

true

true

true

第三种:要是还用c3p0连接池:

1

0

0

true

第四种:最不好的解决方案

使用connector/j连接mysql数据库,程序运行较长时间后就会报以下错误:

communications link failure,the last packet successfully received from the server was *** millisecond ago.the last packet successfully sent to the server was ***  millisecond ago。

其中错误还会提示你修改wait_timeout或是使用connector/j的autoreconnect属性避免该错误。

后来查了一些资料,才发现遇到这个问题的人还真不少,大部分都是使用连接池方式时才会出现这个问题,短连接应该很难出现这个问题。

这个问题的原因:

mysql服务器默认的“wait_timeout”是28800秒即8小时,意味着如果一个连接的空闲时间超过8个小时,mysql将自动断开该 连接,而连接池却认为该连接还是有效的(因为并未校验连接的有效性),当应用申请使用该连接时,就会导致上面的报错。

⑴.按照错误的提示,可以在jdbc url中使用autoreconnect属性,实际测试时使用了autoreconnect=true& failoverreadonly=false,不过并未起作用,使用的是5.1版本,可能真像网上所说的只对4之前的版本有效。

⑵.没办法,只能修改mysql的参数了,wait_timeout最大为31536000即1年,在my.cnf中加入:

[mysqld]

wait_timeout=31536000

interactive_timeout=31536000

重启生效,需要同时修改这两个参数。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对萬仟网的支持。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java mysql 自动重连_JDBC实现Mysql自动重连机制的方法详解 的相关文章

  • fork和multiprocessing

    多任务理解 单核cpu完成多个cpu的切换 时间片轮转 优先级调度 并发看上去一起执行 并行一起执行 调度算法 什么样的情况下用什么样的规则让谁去执行 一般情况下电脑都是并发的 进程的创建 fork 进程VS程序 编写完毕的代码 在没有运行
  • SSTI模板注入

    SSTI模板注入 探测 识别 利用 Smarty Twig 1 x twig2 x 3 x jinja2 探测 使用
  • Redis最全教程—从入门到精通

    Redis 备注 个人学习笔记 是学习B站上的狂神说Java的课程摘录的笔记 视频地址 https www bilibili com video BV1S54y1R7SB B站up主 狂神说Java 笔记参考来源 微信公众号 狂神说 Nos
  • 使用fastreport4经验小谈

    1 fastreport 属性窗口如何找回来 打开报表 frxreport 查看 view gt 选项 options gt 恢复默认值 restore defaults 2 我们查看报表输出时 从第二页不能清晰的看出订单数据是那个客户的数
  • MyEclipse添加反编译插件jadClipse--通用--超好+部署文档,傻瓜版

    MyEclipse添加反编译插件jadClipse 通用 超好 部署文档 傻瓜版 下载地址 https download csdn net download u014246526 10406292 效果图如下
  • Github Copilot 的补强工具Github Copilot Labs的常用功能介绍

    一 什么是Github Copilot Labs Github Copilot Labs是由GitHub推出的一款基于人工智能技术的代码协作工具 旨在协助开发者更加快速 高效地编写代码 该工具使用了机器学习技术 通过学习大量的开源代码和编写
  • Linux下Hadoop的介绍

    hadoop官网 http hadoop apache org 一 初始Hadoop 1 Hadoop是什么 Hadoop是Apache开源组织的一个分布式计算框架 可以在大量廉价硬件设备组成的集群上运行应用程序 并为应用程序提供一组稳定可
  • 最大间隙问题

    问题描述 最大间隙问题 给定n个实数 求这n个数在实轴上相邻2个数之间的最大差值 设计解最大间隙问题的线性时间算法 算法分析 问题很简单 而且描述本身就暗示了一种自然的求解方法 即先对元素排序 然后逐个求相邻元素的间距 这种解法的复杂度为O
  • Linux CentOS 修改MySQL安装目录

    安装MySQL 使用yum和Mysql官方源下载 安装方法参见 点此查看 Mysql 5 7源 修改Yum源 参照这里 修改安装目录 说明 仅针对还没有数据库数据的情况 有数据的请谨慎操作 虽然其实步骤似乎差不多 安装后的MySQL默认路径
  • linux开启rdp服务,让windows电脑mstsc远程,linux rdesktop远程windows机器

    windows 远程 linux桌面系统 windows7 CentOS release 6 9 1 安装 yum install xrdp 2 启动服务 service xrdp start 3 服务加入开机启动项 chkconfig x
  • MRTK-Unity学习记录

    TextMeshPro生成中文字体 Window TextMeshPro Font Asset Creator 1 Source Font File C盘 Windows Fonts 选择需要的字体文件 2 Atlas Resolution
  • Linux下安装Nginx

    一 什么是Nginx Nginx engine x 是一个高性能的 HTTP和反向代理服务器 也是一个 IMAP POP3 SMTP 服务器 正向代理 反向代理 很多大网站都是使用nginx做反向代理 应用非常广泛 Nginx是一款高性能的
  • Spring Boot 中的静态资源是什么,如何使用

    Spring Boot 中的静态资源是什么 如何使用 在 Web 应用程序中 静态资源通常是指不会动态生成的文件 例如图片 CSS JavaScript 文件等 Spring Boot 提供了一种简单的方式来处理这些静态资源 让我们可以更加
  • SpringMVC手写-核心逻辑

    文章目录 注解解析过程DispatcherServlet web xml Controller 自定义注解 从网上看到了SpringMVC实现的最简单版本 大致体现了核心逻辑 1 实现HttpServlet实现web请求访问 2 在实际处理
  • 批量获取力扣做题量工具

    这是一个批量统计国内版LeetCode做题量的工具 写这个小工具的起因是我们实验室准备每周统计大家leetcode的做题量 我们实验室十几个人 如果一人一个人看 太费时间了 作为高效程序员这不是我们做事的风格 于此就有了这个小工具 对于平常
  • matlab 基于密度的聚类算法,基于密度DBSCAN的聚类算法

    聚类算法概念 聚类分析又称群分析 它是研究 样品或指标 分类问题的一种统计分析方法 同时也是数据挖掘的一个重要算法 聚类 Cluster 分析是由若干模式 Pattern 组成的 通常 模式是一个度量 Measurement 的向量 或者是
  • mysqldump使用方法(MySQL数据库的备份与恢复)

    mysqldump使用方法 MySQL数据库的备份与恢复 mysqldump help 1 mysqldump的几种常用方法 1 导出整个数据库 包括数据库中的数据 mysqldump u username p dbname gt dbna
  • TCP三次握手

    三次握手指的是TCP协议建立连接的过程 当客户端请求与服务器建立TCP连接时 必须要经过三次握手才能真正建立连接 三次握手详细过程 第一次握手 客户端向服务器发送 SYN 报文 请求建立连接 其中 SYN 标志位被置为 1 同时客户端随机选
  • eclipse在java环境基础上配置C++环境(MinGW安装包+详细步骤)

    前言 在eclipse开发java的基础上 又不想再下一个c 的编辑器 如何实现java与c 的转换 博主整了两天 踩了好多坑 整理出来帮助大家 第一步 在eclipse里下载CDT 打开以后需要一点时间 搜索CDT 等待下载完成 补充说明

随机推荐