我看过很少关于这个话题的线索,但我仍然无法弄清楚出了什么问题。以下是代码:
import java.sql.*;
public class SQL
{
public static void main(String[] args)
{
Connection conn = null;
String url = "jdbc:mysql://mysql1.oyo.co.il:3306/";
String dbName = "sdarot2_winner";
String driver = "com.mysql.jdbc.Driver";
String userName = "";
String password = "";
String table = "LEADER_CAM_PRODUCTS";
try {
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(url+dbName,userName,password);
System.out.println("Connected to the database");
conn.close();
System.out.println("Disconnected from database");
}catch (Exception e) {
System.out.println(e);
}
}
}
这是我得到的错误:
com.mysql.jdbc.CommunicationsException:由于基础>而导致通信链接失败>例外:
**开始没有异常**
java.net.ConnectException 消息:连接超时:连接
堆栈跟踪:
java.net.ConnectException:连接超时:连接 at java.net.PlainSocketImpl.socketConnect(Native Method) 在java.net.PlainSocketImpl.doConnect(未知来源) at java.net.PlainSocketImpl.connectToAddress(Unknown Source) 在java.net.PlainSocketImpl.connect(未知来源) 在java.net.SocksSocketImpl.connect(未知来源) 在java.net.Socket.connect(未知来源) 在java.net.Socket.connect(未知来源) 在java.net.Socket。(未知来源) 在java.net.Socket。(未知来源) 在com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:256) 在com.mysql.jdbc.MysqlIO。(MysqlIO.java:271) 在com.mysql.jdbc.Connection.createNewIO(Connection.java:2744) 在com.mysql.jdbc.Connection。(Connection.java:1553) 在com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) 在SQL.main(SQL.java:17)
**结束了例外**
发送到服务器的最后一个数据包是1毫秒前。
以下是我发现的一些事情:
a)这是对的。 b)因为我的网站现在正在使用该数据库,所以它没有下降。 c)我怎么检查?我不认为这是问题,因为我说我在这个数据库上有一个正在运行的网站。 d)现在的方式,因为我上面提到的相同的原因。 e)与d
相同那么我做错了什么?为什么PHP代码可以使用sql但java给我错误? 谢谢。
答案 0 :(得分:3)
作为实验,尝试使用系统的telnet命令连接到mysql1.oyo.co.il
上的端口3306。或者打开原始TCP / IP连接的其他一些实用程序(例如nc
或netcat
)。 根据您的OS /发行版,您可能需要找到并安装合适的命令来帮助您解决此问题。观察发生的情况。
重新诊断:
a)这是正确的。
如果你这么说......
b)因为我的网站现在正在使用该数据库,所以它没有下降。
充其量你已经证明主机正在工作。端口80上的Web服务和端口3306上的MySQL服务是不同的服务。 (事实上,mysql1.oyo.co.il
可能正在做巧妙的数据包路由技巧,以便不同端口上的流量被传输路由到不同的主机或虚拟主机。)
c)我该怎么检查?
尝试更改/增加超时。
我不认为这是问题,因为我说我在这个数据库上有一个正在运行的网站。
我猜这不是一个超时问题...但正如我上面所说,你有一个网站的事实说没有关于MySQL服务是否正在运行。
d)现在因为我上面提到的原因。
你只是证明你可以到达80号港口......见上文
e)与d
相同
你只是证明你可以到达80号港口......见上文
基于以上所述,这似乎是合理的:
您看到超时而不是“拒绝连接”这一事实表明,与MySQL服务端点本身的问题相比,这更可能是网络或防火墙问题。
我的猜测是“他们”已撤回服务......并且您不应该再使用它了。 (提供公共MySQL数据库服务让我觉得奇怪的事情......以及从安全和管理的角度来看是有问题的。)
答案 1 :(得分:1)
'连接超时'表示:
很可能是第一个。
请注意,与此处的其他答案相反, 表示服务器程序已关闭,或客户端出现本地防火墙问题。前者会导致“拒绝连接”,后者会根据您的平台给您一些“拒绝许可”的内容。