我在mysql表中有超过400万条记录,我正在使用java检索它们。最初我的代码工作正常,我能够检索所有记录。但是每次我运行这段代码后,它会在检索500,000条记录后突然给我这个通讯链接失败错误。
错误: 通信链路故障
从服务器成功收到的最后一个数据包是159毫秒前。成功发送到服务器的最后一个数据包是27,772,719毫秒之前。
String db="jdbc:mysql://localhost/alltweets";
Connection conn=DriverManager.getConnection(db, "username", "password");
System.out.println("connection to database");
PreparedStatement stat = conn.prepareStatement(
"SELECT Original FROM Tweets",
ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_READ_ONLY);
stat.setFetchSize(Integer.MIN_VALUE);
ResultSet rs = stat.executeQuery();
while(rs.next()) {
Tweet = rs.getString(1);
// some other functions
}
stat.close();
conn.close();
我对每个结果执行一些预处理和其他功能,并将它们存储在一个新文件中,这需要一些时间。这就是为什么我在mysql设置中做了一些更改并增加了保持活动间隔和读出时间的原因。
连接方法是:std TCP / IP。主机名:127.0.0.1端口:3306
请建议我如何解决这个问题。提前谢谢。
-edited- 我在mysql查询中应用了限制,并尝试在循环中提取结果(提到here)。问题仍然存在。一段时间后它停止了工作。