2014-02-08 183 views
0

我无法连接到我的“实时服务器”上的mysql数据库,但它在我的本地计算机上工作得很好。无法创建连接到数据库服务器 - java mysql连接器

在我的主类我这样做:

try { 
    main.connection.open(); 
} catch (SQLException e1) { 
    log.fatal(e1.getMessage()); 
    System.exit(0); 
} 

和开放的方法是这样的

public void open() throws SQLException{ 
    if(con != null) close(); 
    con = DriverManager.getConnection(url, user, password); 
} 

运行我得到这个一两分钟后:

14:35:47.434 [main] FATAL se.mypack.Server - 无法创建与数据库服务器的连接。尝试重新连接3次。放弃。

如何调试? url,服务器和密码变量是正确的。这里可能是什么问题?

使用的MySQL连接器的Java-5.1.29-bin.jar

+0

再次检查您的凭证。你应该100%认为他们是对的。另请参阅用户是否有权访问此数据库 - 确保使用“GRANT”命令为该用户授予权限。 –

+0

已完成。在php中使用相同的凭据进行连接。而且用户还拥有本地主机的权限,这是我正在使用的服务器。我是否需要为服务器本地IP设置权限?例如。 192.168.0.4 – daker

+0

是的,如果您尝试从您的计算机进行连接,则需要在实时数据库上执行此操作。你需要给你的机器的外部IP权限(你可以看到如果你ssh进入它 - 如果它是一个linux环境) - 看到这个:http://stackoverflow.com/a/8348560/ 728610 –

回答

-1

首先,你必须确保你已经装载您的数据库驱动程序类。 它如下所示: Class.forName(“org.apache.derby.jdbc.EmbeddedDriver”);

这是用于DERBY DB的。 每个数据库都有不同的驱动程序类,但想法是一样的。

如果您已经做到了,请检查您是否尝试建立连接的客户端机器 与数据库服务器有tcp连接。你可以使用:ping -t your.server.ip。 如果得到响应,尝试建立telet连接到该URL +端口号(数据库监听器侦听的端口,对于Oracle它将是1521,对于Derby它是1527 ..),并且看到你没有获取任何连接拒绝消息。 如果连接尝试失败,请查看数据库侦听器是否启动,或者是否存在防火墙问题。

好运, Yosi利