Connection was closed due to the following exception:
** BEGIN NESTED EXCEPTION **
java.sql.SQLException
MESSAGE: Communication link failure: java.net.SocketException, underlying cause: Software caused connection abort: recv failed
** BEGIN NESTED EXCEPTION **
java.net.SocketException
MESSAGE: Software caused connection abort: recv failed
STACKTRACE:
java.net.SocketException: Software caused connection abort: recv failed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:183)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:222)
at java.io.BufferedInputStream.read(BufferedInputStream.java:277)
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1385)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:1532)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1923)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1163)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1272)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2236)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1555)
at net.sf.hibernate.impl.BatcherImpl.getResultSet(BatcherImpl.java:89)
at net.sf.hibernate.loader.Loader.getResultSet(Loader.java:880)
at net.sf.hibernate.loader.Loader.doQuery(Loader.java:273)
at net.sf.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:138)
at net.sf.hibernate.loader.Loader.doList(Loader.java:1063)
at net.sf.hibernate.loader.Loader.list(Loader.java:1054)
at net.sf.hibernate.hql.QueryTranslator.list(QueryTranslator.java:854)
at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1554)
at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1531)
at net.sf.hibernate.impl.SessionImpl.delete(SessionImpl.java:1678)
at net.sf.hibernate.impl.SessionImpl.delete(SessionImpl.java:1664)
出错原因:
我们的系统一天24小时运行,但在夜晚的时候是没有人连接的,因此Socket连接就超时了。早上尝试做任何事情(比如:登录)都将以失败告终,除非我们关闭连接或者重新建立连接。到3.0.11后才会发生这种情况。
现在我们使用的MYSQL版本号为4.016,问题一样。
专家建议:
[Mark Matthews],翻译如下:
注意:我不赞成Autoreconnect功能,在以后的发行版本中,它最终会被移除。在这种特殊情况下, 它不起作用的原因是:在3.0.11以后,autoreconnect的方法变得更加安全了并且和阿utoCommit状态有关联,这样的话就能使当前‘in-flight’事务失败(如果你在失败后,再次试图连接事务,就会重新被连接)。请查看相关解释文档,文档的修复故障中包括如何正确实用这个属性。无论在哪种情况下, 如果TCP/IP在没有连接的情况下并且还不会冒着数据库被瘫痪的危险,是没有百分之百的方式使得JDBC驱动器被自动重连接的,这也是为何要移除Autoreconnect功能的原因。不管网络发生什么情况, JDBC 都不会说明这个连接是否处于连接状态。JDBC driver 客户端负责处理网络故障,只有应用程序本身(实际上是应用程序的开发者)知道如何正确应对事务失败的情况。在服务器上过期的‘Wait—timeout’基本上是服务器给与的强制性网络故障。你通过把‘Wait—timeout’设置的高点儿就可以改正它,尽管如此,作为一个开发者,你的代码应该包含相关的异常处理并采取适当的恢复措施,不要都把它们传到调用堆中。
连接错误总是有一个SQL状态‘08’。如果你发现它的话,你可以再连接一次并重试事务(如果是适当的话)
不管什么原因,如果这样不起作用的话,配置你的连接池来测试是否处于连接状态并且那些长时间闲置连接(所有的连接池都能这样做,但是它们的配置取决于池子)。
作者说明:在MYSQL4.1以后的版本当中,没有“wait_timeout”变量,由interactiveClient代替
参考资料:http://dev.mysql.com/doc/connector/j/en/cj-configuration-properties.html
[Kirk Wylie]:翻译如下:
如果有一个事务在运行的话,就能得到一个特别简单的例子:
---如果连接在autoCommit模式下,autoReconnect是安全的。
---如果连接不在autoCommit模式下,但是没有打开的事务,autoReconnect是安全的。(因为连接可能在池在里面)
---如果连接不在autoCommit模式下,有打开的事务,这样就会抛出异常。
这样会解决你不在autoRecom\nnect模式下的忧虑并且会保留应用程序的功能性。
尽管如此,在它改变的时候,在改变日志中没有任何记录说明发生了改变,这点令我很烦。由于这种改变很可能破坏我的应用程序,这种变化因该添加到CHANGE文件中。
如下是我个人的做法:
(STRUTS+SPRING+HIBERNATE)
1、把mysql的变量interactiveClient由 默认的28800(8个小时)延长。并告知用户多长时间后,重新启动TOMCAT服务器。不过,MYSQL5.0.12版本以前的所有版本,只要你设置成 了默认语言为GBK,所有对interactive_timeout(wait_timeout)的时候如何设置,重新连接或者重新启动MYSQL后,都 是28800,现在我使用的5.0.18后,使用GBK,没有问题。
2、在HIBERNATE当中加入:
..
<property name="hibernate.connection.url">jdbc:mysql://192.168.100.111/eai?autoReconnect=true</property>
<property name="enableDeprecatedAutoreconnect">true</property>
<!-- 如下的语句是使用第三方的DBCP来建立连接池 -->
<property name="dbcp.maxActive">100</property>
<property name="dbcp.whenExhaustedAction">1</property>
<!-- 看到了没有,这个maxWait一定要大于MYSQL默认的28800(秒) -->
<property name="dbcp.maxWait">30000</property>
<property name="dbcp.maxIdle">10</property>
<property name="dbcp.ps.maxActive">100</property>
<property name="dbcp.ps.whenExhaustedAction">1</property>
<property name="dbcp.ps.maxWait">30000</property>
<property name="dbcp.ps.maxIdle">10</property>
..
如上两种方法均可,推荐大家使用第二种方法,来遮挡一下MYSQL的BUG。
如果有不对之处,请大家提出自己的见解。
http://www.blogjava.net/heweiya/archive/2006/01/18/28483.html
分享到:
相关推荐
MySQL Proxy 是一个轻量级的中间件,用于在 MySQL 客户端和服务器之间提供额外的功能,如负载均衡、故障切换、数据过滤等。然而,使用 MySQL ...记得保持 MySQL Proxy 的更新,以便获得最新的 bug 修复和性能改进。
通过以上详尽的解决方案,即使在安装bugfree时遇到MySQL兼容性、Apache服务启动失败、端口冲突或Internet Server Error等常见问题,也能轻松应对,确保bugfree顺利安装并高效运行。这不仅有助于提升软件测试效率,还...
本文将详细介绍如何在PHP7.1和MySQL5.0环境下成功部署并使用BugFree,以解决这些困扰。 一、BugFree简介 BugFree是一款基于Web的缺陷跟踪系统,旨在提高软件开发过程中的缺陷管理效率。它支持多用户协作,提供丰富...
总的来说,Bugfree是一个实用的bug管理系统,它充分利用了JSP的动态网页能力和MySQL的数据管理优势,为软件开发团队提供了一个便捷的工具,以更好地追踪、管理和解决项目中的bug,从而提升整个项目的质量和效率。...
- 如果以上方法都无法解决问题,可以考虑手动安装MySQL。 - 手动安装需要下载MySQL的压缩包,解压后根据官方文档逐步配置环境变量、初始化数据库等。 6. **查看日志文件**: - 查看安装过程中产生的日志文件,...
#### 三、常见问题及解决方法 - 如果在启动过程中遇到错误提示,检查`my.ini`配置文件是否正确配置了路径。 - 初始化`data`文件夹:如果配置无误但仍出现错误,可以尝试使用命令`mysqld --initialize`来初始化`data`...
Please report any problems with the /usr/bin/mysqlbug script! ``` 该输出提示您设置MySQL root用户的密码,并提供了两种设置密码的方法。 #### 四、安装MySQL客户端 安装完服务端之后,接下来安装MySQL客户端...
本文详细介绍了如何在Linux环境下安装BugFree缺陷跟踪系统,包括了安装前的准备工作、具体步骤以及可能遇到的问题及解决方法。遵循本文提供的指导,可以帮助您顺利地在Linux环境中部署并使用BugFree,从而提高软件...
### Apache+SVN+MySQL+PHP+SVNManager+BugFree 完全安装手册 #### 一、Apache+SVN 安装与配置 ##### 1. 安装 Apache 2.2.9 在安装 Apache 之前,请确保你的计算机运行的是 Windows 2000、Windows XP SP1 或 ...
### Bugfree安装指南及MySQL密码修改方法 #### 一、Bugfree简介 Bugfree是一款开源的缺陷跟踪系统,主要用于管理软件开发过程中的缺陷记录、跟踪和处理。它基于Web技术,支持多用户协同工作,是项目管理和软件测试...
- MySQLBug:若怀疑是MySQL自身的Bug,应检查相关资料,看是否已有解决方案。 文档中提到了一种“MySQL问题分析树”,它将问题的切入点和可能的组成部件进行了层级划分。利用这种分析树,可以更系统地定位问题所在...
delphi7使用TSQLCONNECTION连接mysql5无法设置端口的问题,经常...并修改了Tsqlquery报错的bug 下载新的dbxopenmysql50.dll后,添加SQLCONNECTION1.Params.Append('Server Port=3388' )代码即可,端口改为mysql的端口。
### 基于SSM+MySQL的软件Bug管理系统:关键技术解析 #### 一、系统概述与背景 在软件开发过程中,Bug的管理是一项至关重要的任务。一个高效的Bug管理系统能够帮助团队快速定位问题、分配资源并跟踪修复进度,从而...
在`linux安装bugfree.txt`文件中,应包含了安装过程中可能遇到的问题及解决方案。常见问题可能包括: - PHP扩展缺失:检查是否安装了`php-gd`, `php-xml`, `php-curl`等必要扩展。 - MySQL连接失败:检查数据库...
本篇文章将深入探讨如何解决Jira 7.2版本与MySQL 5.7驱动包不兼容的问题,以及涉及的相关知识点。 首先,我们要明确问题的核心:Jira 7.2不能识别或使用MySQL 5.7提供的驱动包`mysql-connector-java-5.1.39-...
基于SSM+MySQL的软件BUG管理系统源码数据库论文 本论文的主要目的是设计和实现一个基于SSM(Spring+SpringMVC+MyBatis)框架和MySQL数据库的软件BUG管理系统。该系统旨在提供一个高效、可靠的BUG管理平台,帮助...
登录MySQL数据库管理工具phpMyAdmin,创建一个新的数据库用于存放BugFree的数据。 **步骤4:运行安装脚本** 在浏览器中输入`http://localhost/bugfree/install.php` 来执行BugFree的安装脚本。 **步骤5:完成安装*...