解决方案:
方案一、
show variables like ‘%timeout’;
set wait_timeout= 57,350,142;
set interactive_timeout = 57,350,142
方案二、
重启mysql进程
方案三、
如果在你的程序中正确关闭connections
但是这里有一点要注意要把关闭的语句写在finally中,
如果你写在try{}中出现异常的话是无法正确关闭的。
如下
} catch (SQLException e) {
} finally {
try {
if (stmt != null)
stmt.close();
if (dbConnection != null)
dbConnection.close();
} catch (SQLException e) {
}
最后一个是最实用的的,我亲身经历再加上度友们的建议
我之前虽然都关闭连接了,但是3个conn,st,rs写在一个try{}cath(){}finally{关闭三个连接}
总结:
出现这些问题:
不要重启服务器,这个没用的,虽然重启之后正常了,但是没多久又不行,因为是程序问题
一定一定一定一定一定一定一定一定检查程序,关闭连接,关闭连接
多个conn,rs st的一定要分开了,结果集用集合装起来,不要如下:
多个rs放在一起如果出错就会导致其中一个连接无法收回,一直处于阻塞
try{
while(rs.next){
num = rs.getString(1);
// 对每个编号进行最近时间的查询基站
conn1 = JdbcUtils_DBCP.getConnection();
String sqls = “SELECT * FROM yh WHERE number=’” + num + “’ ORDER BY TIME DESC LIMIT 1”;
st1 = conn1.prepareStatement(sqls);
rs1 = st1.executeQuery();
if (rs1.next()) {
times = rs1.getString(8);//这个是时间
// 判断最后一条记录的时间跟当前时间的距离
// 获取当前的时间
Date date = new Date();
…
}
}catch(){
}finally{
关闭连接
}