重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
解决mysql自动断开连接的问题
成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站建设、网站设计、连江网络推广、重庆小程序开发、连江网络营销、连江企业策划、连江品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联为所有大学生创业者提供连江建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com
有三个方法可以解决这个问题:
1:修改MySQL配置参数
2:修改JDBC
3:修改第三方的数据库连接池应用 Proxool.xml
方法1的解决方案:
这个参数的名称是 wait_timeout,其默认值为 28800秒(8小时)。其意义为关闭一个连接之前在这个连接上等到行动的秒数,也就是说,如果一个连接闲置超过这个选项所设置的秒数,MySQL 会主动断开这个连接。
mysql交互输入每次显示终端连接已断开是MySQL的默认设置。当一个连接的空闲时间超过8小时后,MySQL就会断开该连接。超过这个时间(默认是8小时)对数据库没有任何操作,那么MySQL会自动关闭数据库连接以节省资源。
最近做的一个JavaWeb项目,持久层用SpringJDBC+DBCP+MySQL。一开始只配置了DBCP的一些常用参数,没有注意对空闲连接的检查和回收。项目部署在tomcat后,刚开始使用没用问题。第二天再试图登录时,发生了报错:
可以看到,报错信息提示上次交互已经是82664635ms前,超过了MySQL server配置的'wait_timeout'(默认是8小时),所以该连接已经被MySQL回收了,但DBCP不知道连接已被回收,依然试图执行操作,引发了异常。报错信息提示可以修改wait_timeout或者添加autoReconnect=true。
(备注:mysql5以上的,设置autoReconnect=true 是无效的 只有4.x版本,起作用)
这两个参数的默认值是8小时(60 60 8=28800)。 注意:wait_timeout的最大值只允许2147483 (24天左右)
也可以用MySQL命令进行修改
这种办法治标不治本。
2.减少连接池内连接的生存周期,使之小于上一项中所设置的wait_timeout 的值。
也就是说,让已经断开的空闲连接没有机会被使用,提前被回收。
以C3P0配置为例:
DBCP中配置minEvictableIdleTimeMillis即可。
3.配置连接池
定期使用连接池内的连接,使得它们不会因为闲置超时而被 MySQL 断开。并且每次使用连接前检查连接是否可用,定期回收空闲的连接。
修改 c3p0 的配置文件,在 Spring 的配置文件中设置:
DBCP连接池的配置:
DBCP官方配置文档:
C3P0的配置标准:
关于MySQL的wait_timeout连接超时问题报错解决方案
解决办法:1、检查下出问题之前安装的程序,2、重装MYSQL!
你在计算机上右键属性然后切换到高级选项卡之后选择性能那里的设置,然后出来的窗口第三个选项是数据执行保护,你看下是不是勾选的除所选之外,为所有应用程序和服务执行数据保护,如果是,就选择只为关键Windows应用程序执行数据保护,确定之后然后重启电脑再看,估计是这里的问题,这个选项的选择会导致很多兼容性的问题的,服务器操作系统主要是为了服务器而生,所以设置相比之下比桌面系统更加考虑的安全一点,作为桌面系统来用需要优化之后才适合。当然如果作为服务器的话就建议不要去乱优化成什么桌面系统了。
网络的问题。mysql和mycat断开连接是网络连接异常导致。
1、首先打开电脑检查网络。
2、其次打开mysql进行测试网络连接是否异常。
3、最后点击连接mycat重新进入即可。
两种常见的断开方式:
1 根据数据库连接字符串设置链接生命周期 会自行断开
2 拿,net环境举例 MySQL.Data.MySqlClient类库下的 MySqlConnection类 下面有个方法 叫 .Close() 即可断开连接;
访问MySqlConnection类下的 Statu (只读的)字段 可以获得当前连接状态
提示 断开后的连接 可以随时 根据需要打开