`
wiiln
  • 浏览: 151883 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

MySQL 自动断开连接的问题

阅读更多
在MySQL数据库中,如果一个连接8小时没有请求和操作,就会自动断开,从而导致一些基于数据库连接的应用程序,特别是 WEB 应用程序出错。
有三个方法可以解决这个问题:
1:修改MySQL配置参数
2:修改JDBC
3:修改第三方的数据库连接池应用 Proxool.xml

方法一:这个参数的名称是 wait_timeout,其默认值为 28800秒(8小时)。其意义为关闭一个连接之前在这个连接上等到行动的秒数,也就是说,如果一个连接闲置超过这个选项所设置的秒数,MySQL 会主动断开这个连接。
修改操作:
linux下打开/etc/my.cnf,在属性组mysqld下面添加参数如下:
[mysqld]
interactive_timeout=28800000
wait_timeout=28800000

windows下打开my.ini,增加:
interactive_timeout=28800000
wait_timeout=28800000
有实践表明,没有办法把这个值设置成无限大,即永久。因此如果你无法保证你的应用程序必定在设定的秒数内至少有一次操作,那么最好用第二个方法解决这个问题。

方法二:修改如下JDBC连接的 URL:
jdbc:mysql://hostaddress:3306/schemaname?autoReconnect=true
添加 autoReconnect=true 这个参数,即能解决这个问题。

方法三:配置文件(proxool.xml):
<?xml version="1.0" encoding="UTF-8"?>
<!-- the proxool configuration can be embedded within your own application's. Anything outside the "proxool" tag is ignored. --> <something-else-entirely>
<proxool>
<!-- proxool别名 -->
<alias>mysql</alias>
<!-- 数据库连接URL -->
<driver-url> jdbc:mysql://localhost/yourDatebase?useUnicode=true&characterEncoding=UTF-8</driver-url>
<!-- JDBC驱动名称 -->
<driver-class>com.mysql.jdbc.Driver</driver-class>
<!-- 数据库连接帐号 -->
<driver-properties>
    <property name="user" value="root" />
    <property name="password" value="password" />
</driver-properties>
<!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁 -->
<house-keeping-sleep-time>90000</house-keeping-sleep-time>
<!-- 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受 -->
<maximum-new-connections>20</maximum-new-connections>
<!-- 最少保持的空闲连接数 -->
<prototype-count>3</prototype-count>
<!-- 允许最大连接数,超过了这个连接,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定 -->
<maximum-connection-count>20</maximum-connection-count>
<!-- 最小连接数 -->
<minimum-connection-count>3</minimum-connection-count>
<!-- 在分配连接前后是否进行有效性测试,这个是解决本问题的关键 -->
<test-before-use>true</test-before-use>
<test-after-use>true</test-after-use>
<!-- 用于测试的SQL语句 一定要写(不知道问什么)-->
<house-keeping-test-sql>SELECT CURRENT_USER</house-keeping-test-sql>
</proxool>
</something-else-entirely>

分享到:
评论

相关推荐

    mysql连接的空闲时间超过8小时后 MySQL自动断开该连接解决方案

    解决这个问题的办法有三种: 1. 增加 MySQL 的 wait_timeout 属性的值。 修改 /etc/mysql/my.cnf文件,在 [mysqld] 节中设置: # Set a connection to wait 8hours in idle status. wait_timeout =86400 相关参数,...

    qt中mysql超时自动断开连解决方案.txt

    可以直接通过设置来达到重连问题,方法很简单,里面有复现自动断开连接导致不能正常插入数据的方法,是自己没有积分所以才要积分

    nodejs 关于mysql模块 连接超时自动断开解决方法

    nodejs 关于mysql模块 连接超时自动断开解决方法,在这块遇到的坑,而且坑了很久才找到的,分享只为求分

    Qt Mysql超时断开后自动重连完美解决方法

    网上找了很多解决办法,几乎没有一个能完美解决问题的,大体都是首先执行一段query后看返回结果,但这个办法也太无用和耗费资源了吧...因为断开后isOpen和isValid都会返回true,所以不能从这里入手...

    MySQL+Hibernate下连接空闲8小时自动断开问题解决方案.pdf

    解决 MySQL+Hibernate 连接空闲8小时自动断开问题 概述: 在使用 MySQL 和 Hibernate 进行数据库持久层开发时,可能会遇到连接空闲8小时自动断开的问题。本文将讨论该问题的解决方案,并对相关的知识点进行详细...

    Qt Mysql重连保障

    使用Qt的方式访问Mysql 由于Mysql连接有时间限制,使用此方法可保证Mysql的正确使用

    MySQL+Hibernate下连接空闲8小时自动断开问题解决方案.docx

    MySQL+Hibernate 连接空闲8小时自动断开问题解决方案 知识点1: Hibernate 的连接池机制 在 Hibernate 中,默认情况下 使用的是 DriverManagerConnectionProvider,这是一个简单的连接池机制。它将打开的连接缓存在...

    ODBC访问MySQL

    ODBC(Open Database Connectivity)是微软推出的一种数据库访问标准,它提供了一种统一的方式来访问不同数据库系统,包括MySQL。在本教程中,我们将探讨如何利用C#语言通过ODBC接口来构建一个简单的数据库应用程序...

    mysql服务自动停止解决方案.txt

    在mysql数据库中,如果一个连接8小时没有请求和操作,就会自动断开,从而导致一些基于数据库连接的应用程序,特别是 web 应用程序出错。 1、操作步骤 我的电脑-右击-服务-找到mysql服务 双击新窗口中 -》恢复...

    MySQL Sleep连接过多问题解决方法

    2. **超时设置不当**:MySQL服务器有两个参数`wait_timeout`和`interactive_timeout`,分别用于控制非交互式和交互式连接在无活动时多久后自动断开。如果客户端在这些设定的时间内没有发送新的请求,连接会保持在...

    邮件类,mysql数据库连接类,自动生成水印缩略图类

    它可能包含了连接、断开、查询、插入、更新、删除等基本操作,以及错误处理和结果集处理等功能。通过封装这些操作,开发者可以更安全、便捷地管理数据库,无需每次写代码时都重复同样的数据库连接和查询步骤。 最后...

    CodeBlocks连接Mysql数据库解决文档

    3. 在代码中使用`mysql_options()`函数设置`MYSQL_OPT_RECONNECT`选项,以便在连接断开后自动重连,因为`caching-sha2-password`可能会在认证过程中断开连接。 为了成功完成上述步骤,你需要下载和安装合适的MinGW...

    Linux连接MYSQL

    通常,类`MyDB`会包含构造函数、析构函数以及用于连接、断开、执行SQL语句的方法。这些方法可能包括`connect()`, `disconnect()`, `executeQuery()`, `executeUpdate()`等。 3. **连接数据库**: 在`MyDB`类中,`...

    MySQL数据库连接超时(Wait_timeout)问题总结.pdf

    MySQL数据库的连接超时问题,通常表现为Wait_timeout错误,指的是当客户端与服务器之间的连接在指定时间内没有进行任何数据交互,数据库会自动断开这个连接,以释放资源并防止不必要的资源占用。这一特性在MySQL中是...

    mysql连接测试

    本文主要介绍了如何在VS 2013环境下使用C#和`.NET Framework 4`连接MySQL数据库,涉及到的知识点包括:MySQL.Data.dll的使用、VS 2013的MySQL插件安装、NuGet包管理、数据库连接字符串的构建、连接与断开、SQL命令...

    c++封装MYSQL数据库连接代码

    在这个项目中,开发者可能创建了一个类(如`MySQLConnection`),该类包含连接、断开、查询、插入、更新和删除等方法。这些方法内部调用了MySQL的原始API,如`mysql_connect()`、`mysql_query()`、`mysql_fetch_row...

    sqlYog连接MYSQL数据库

    7. **断开连接**:完成操作后,记得点击右上角的“断开连接”按钮,以确保资源的安全。 通过 SQLyog,用户可以高效地管理和维护 MySQL 数据库,提高工作效率。无论是对于个人开发者还是企业团队,SQLyog 都是一款...

    程序自动化-连接MySQL数据库时自动开启服务器-Python实例源码.zip

    本资源“程序自动化-连接MySQL数据库时自动开启服务器-Python实例源码.zip”提供了一个具体的Python代码实例,旨在教你如何在运行Python程序时自动连接到MySQL数据库并启动服务器。以下是关于这个主题的详细知识: ...

Global site tag (gtag.js) - Google Analytics