Java - 使用JDBC连接到在线MySQL数据库时遇到的问题

问题描述:

我试图在Java应用程序中使用JDBC建立连接以访问我的在线数据库,以便插入和查询表。以下是我目前正在:(实际IP /用户/密码编辑,但他们是对的,因为我已经做了类似从PHP脚本)Java - 使用JDBC连接到在线MySQL数据库时遇到的问题

String url = "jdbc:mysql://984.168.199.70/my_db_name"; 
    String user = "my_username"; 
    String pass = "my_password"; 

Class.forName ("com.mysql.jdbc.Driver").newInstance(); 
    Connection conn = (Connection) DriverManager.getConnection(url, user, pass); 
    stmt = (Statement) conn.createStatement(); 

但是,这并不工作,我得到的错误:

Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. 

然后错误日志很长。

所以只需指出:在使用PHP脚本之前,我已连接到此服务器,并且我已使用JDBC连接到本地主机MySQL数据库并与其进行交互。

感谢您的任何帮助。

+0

任何特殊的端口打开了MySQL的,或者它的默认? – sgibly

+0

另外,看看http://*.com/questions/2102912/cant-make-jdbc-connection-to-mysql-using-java-intellij-and-linux – sgibly

+1

至于具体问题,请检查http:// *.com/questions/2983248/jdbc-with-mysql/2985169#2985169至于你已发布的代码,那些不必要的转换让我认为你实际导入了MySQL的具体实现类“Connection”和“Statement”。虽然不一定是你的问题的原因,这是一个*不好的做法*。总是声明'java.sql。*'接口!如果您升级驱动程序或切换数据库,您的JDBC代码将以其他方式破坏并需要完整的重写/重建。 – BalusC

我也有这个问题,它总是(在我的情况下)下降到一个不正确的jdbc网址,例如,丢失/错误的端口号(我知道你的示例代码已被编辑,但它没有指定任何端口)或不正确的IP地址,未能检查mysql是否正在运行,并且正在接受你希望的端口和IP上的连接。检查您的my.cnf中的绑定地址对您的jdbc url中的IP地址

+0

我不知道什么(如果有)端口,我应该指定...我有服务器托管在Godaddy .com,这是从来不容易处理的 – JDS

+0

默认端口是3306,所以你的jdbc url应该像jdbc:mysql://84.168.199.70:3306/my_db_name那么BalusC表示删除(Connection)强制转换。快速谷歌显示了这一点,可能有助于http://help.godaddy.com/article/262 – eon

+0

谢谢,但仍然没有运气。令人讨厌的是,具有相同IP /用户名/密码的基本PHP脚本完美地工作。 Godaddy是否不允许Java访问? – JDS

在这里回答我自己的问题,因为我的代码很好。问题出在我的Godaddy设置上。

基本上,当你与这些人一起创建一个MySQL数据库时,确保你有“Allow Direct Database Access”设置为YES。显然我的其他数据库不是。

如果其他人有任何意见,我仍然不会回答这个问题。这些配置的东西总是让我...

+0

我面对完全相同。我正在使用000webhost.com的免费服务。同样的错误?任何想法如何能够解决或发现“允许直接访问”数据库? –