Java程序连接MySQL数据库,会出现下面这个错误,错误信息如下所示:
Communications link failure due to underlying exception:
java.io.EOFException
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1913)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2304)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2803)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
产生这个问题的原因是当应用程序和数据库建立连接时候,如果超过了8个小时,应用程序语句不去访问数据库,数据库就会断掉连接。如果此时再次去访问数据库就会出现上面的错误信息。这就是“重名昭著”的MySQL八小时问题。
解决办法:
增大interactive_timeout值
set global interactive_timeout=288000
# vi /etc/my.cnf
[mysqld]
interactive_timeout=288000