数据库轮询的问题
一个小程序,实现mysql数据库轮询。流程为
新建一个连接→判断该连接是否断开,如果断开重新建立→使用该连接查询xx表(每次只查询一行记录,循环等待时间为1秒)
程序在成功从早上9点运行到晚上2点左右报错...
堆栈信息:
com.mysql.jdbc.CommunicationsException: 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:1934)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2380)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2909)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1600)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1695)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3026)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1137)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1231)
at com.word.DBC.DB_Control.getMsg(DB_Control.java:62)
at com.word.DBC.DB_Control.main(DB_Control.java:185)
** END NESTED EXCEPTION **
Last packet sent to the server was 16 ms ago.
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2592)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2909)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1600)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1695)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3026)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1137)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1231)
at com.word.DBC.DB_Control.getMsg(DB_Control.java:62)
at com.word.DBC.DB_Control.main(DB_Control.java:185)
conn is closed,重建连接
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.net.SocketException
MESSAGE: java.net.ConnectException: Connection timed out: connect
STACKTRACE:
java.net.SocketException: java.net.ConnectException: Connection timed out: connect
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:284)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2569)
at com.mysql.jdbc.Connection.<init>(Connection.java:1485)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at com.word.uitl.DB_Conn.<init>(DB_Conn.java:21)
at com.word.DBC.DB_Control.getMsg(DB_Control.java:53)
at com.word.DBC.DB_Control.main(DB_Control.java:185)
** END NESTED EXCEPTION **
Last packet sent to the server was 0 ms ago.
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2643)
at com.mysql.jdbc.Connection.<init>(Connection.java:1485)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at com.word.uitl.DB_Conn.<init>(DB_Conn.java:21)
at com.word.DBC.DB_Control.getMsg(DB_Control.java:53)
at com.word.DBC.DB_Control.main(DB_Control.java:185)
Exception in thread "main" java.lang.NullPointerException
at com.word.DBC.DB_Control.getMsg(DB_Control.java:85)
at com.word.DBC.DB_Control.main(DB_Control.java:185)