一台合肥的机器机器A(电信),访问北京铁通的mysql服务器。直接用mysql客户端可以连接上,而且ping的值平均才30ms。当使用jsp的JDBC连接,却出现这样的错误:
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.net.SocketException
MESSAGE: Connection reset
STACKTRACE:
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
......
......
数据连接出错,请确保用户名,密码和服务器名没有错误
JSP文件的内容是:
<%@ page import="java.sql.*,java.util.*" %><%@ page contentType="text/html;charset=UTF-8"%><%
java.sql.Connection sqlConn;
java.sql.Statement sqlStmt;
java.sql.ResultSet sqlRst;
try{
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
sqlConn=java.sql.DriverManager.getConnection("jdbc:mysql://ip:3306/mintel?useUnicode=true&characterEncoding=UTF-8", "readonly","readonly");
sqlStmt=sqlConn.createStatement();
out.println("<p align=center>数据库连接正常.");
try{
String query="select userId from nd_users";
ResultSet rs =sqlStmt.executeQuery(query);
int i=0;
while(rs.next()){
i++;
}
out.println("<br align=center>"+"查询到的数据条目:"+i);
rs.close();
}catch(Exception ex){
out.println("<p align=center>"+ex.toString());
out.println("<p align=center><font color=red>数据查询出错</font>");
}
sqlStmt.close();
sqlConn.close();
}catch(Exception e){
out.println("<p align=center>"+e.toString());
out.println("<p align=center><font color=red>数据连接出错,请确保用户名,密码和服务器名没有错误</font>");
}
out.println("<br><br>");
%>
我连接了几十次,只有几次连接成功。而前几天连接一直都正常。
请问造成这个错误的原因是啥,如何解决?