我使用PreparedStatement
选择了一个例外。
Got an exception accessing TestCase data! null
Problem to connect.
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:
Too many connections
这是我的代码:
public Integer getTypeByInputAndProblemId(String inputTestCase, Long problemId) {
String sql = "SELECT type FROM test_case where problem_id= ? and input= ?";
Integer type = 0;
try {
PreparedStatement ps = connection.prepareStatement(sql);
ps.setLong(1, problemId);
ps.setString(2, inputTestCase);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
type = new Integer(rs.getInt("type"));
}
rs.close();
ps.close();
} catch (Exception e) {
System.err.println("Got an exception accessing TestCase data! " + e.getMessage());
}
return type;
}
在第PreparedStatement ps = connection.prepareStatement(sql)
行;
我的问题是因为连接有时是空的(调试显示这个)。
我猜这是因为有很多联系,但我不知道为什么会这样。
我想要一些帮助!
答案 0 :(得分:1)
是的,问题发生是因为您的服务器达到了MySQL服务器接受的最大连接数。
首先,您需要查看MySQL中是否为多个连接配置了正确的号码:max_connections。 如果这看起来很低,你可以增加这个数字,以便修复"这个问题。
其次,如果数字有意义,您可能会使用比您想象的更多的连接。 可能是因为您在应用中打开了连接而未关闭它们。
检查目前服务器已使用多少个连接。
show status like 'Max_used_connections';
重新启动数据库服务时会重置此数字。