我正在使用MYSQL 5.0和Tomcat 5.5.8小时后,MYSQL默认关闭所有空闲连接,所以我得到一个SQL异常.这个问题的任何解决方案
我正在开发Spring,MySQL和Hibernate项目,如果项目在8小时内没有使用,我会收到以下错误.有人可以告诉我为什么.看起来如果我重新启动服务器,一切都很好,直到晚上或者如果没有人在中午使用系统几个小时.有人可以帮助我,我刚刚在我的一些项目中发现了这个问题所以我必须在许多项目中犯同样的错误..请帮忙
这是我的java代码的一个例子,我错过了一些东西:
public void saveVisit(VisitModel visit) throws Exception {
LOGGER.debug("[" + visit.toString() + "]");
sessionFactory.getCurrentSession().saveOrUpdate(visit);
}
@SuppressWarnings("unchecked")
public School_lookupModel getSchoolInformation(String schoolCode)
{
return (School_lookupModel) sessionFactory.getCurrentSession()
.createCriteria(School_lookupModel.class)
.add( Restrictions.like("school", schoolCode))
.uniqueResult();
}
Run Code Online (Sandbox Code Playgroud)
以下是错误的控制台输出:
2012-09-06 08:00:07,088 [http-8080-2] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 0, SQLState: 08S01
2012-09-06 08:00:07,088 [http-8080-2] ERROR org.hibernate.util.JDBCExceptionReporter - Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.io.EOFException
STACKTRACE:
java.io.EOFException
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1963)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2375)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2874)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1623)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1715)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3249)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1268)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1403) …Run Code Online (Sandbox Code Playgroud) 我正在apache tomcat服务器上运行程序,应该是永久性的,但每天早上(客户端部分在晚上无法访问)我收到MySQL服务器关闭的错误消息(在apache tomcat控制台中).那有什么方法可以防止这种情况发生吗?提前致谢!