1

我正在尝试连接到 mysql 数据库,但我不断收到错误消息: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

我知道网址应该是:“jdbc:mysql://server-url:3306”

这是代码:

import java.sql.Connection;
import java.sql.DriverManager;

public class FT_Database_Connection{
private Connection connection;

public FT_Database_Connection(String url, String username, String password){
    try{
        System.out.println("Loading driver...");
        Class.forName("com.mysql.jdbc.Driver");
        System.out.println("Driver loaded!");

        String user = username;
        String db_pw = password;
        System.out.println(url);
        System.out.println(username);
        System.out.println(password);
        Connection test = DriverManager.getConnection(url, user, db_pw);

    }catch(Exception e){
        System.out.println("Couldn't get database connection.");
        e.printStackTrace();
    }
}

public Connection get_connection(){
    return this.connection;
}

}

有任何想法吗?

另外,Godaddy 询问我是否想要DSN。那是什么意思?我需要吗?

谢谢

4

3 回答 3

2

您需要将数据库名称放在 MySQL 端口 (:3306/DB_name) 之后。这是我的一个连接:

import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;

public class MySQL{

    static Connection connect;
    public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException {
    Credentials();

    Class.forName ("com.mysql.jdbc.Driver").newInstance ();

    String url = "jdbc:mysql://" + host + ":3306/" + datab;

    Driver test = DriverManager.getDriver(url);
    // testing to make sure i'm using the correct
    //driver and further testing host
    System.out.println(test);
    connect = DriverManager.getConnection(url, userName, password);

    System.out.println ("Connected to " + host);
    }
}

您需要提供“host”和“datab”字符串值

于 2012-10-03T18:33:28.567 回答
1

如果没有记忆,GoDaddy 有几个不同的 MySQL DB 实现可供您选择。一种允许远程访问,另一种不允许。你确定你选对了?

您是否尝试过首先使用 MySQL Workbench 进行远程连接?甚至远程登录到端口?这将确保您拥有正确的数据库名称和远程连接权限。一旦你可以确认它有效,让代码工作应该会更容易。

于 2012-10-03T19:31:30.827 回答
0

我讨厌为这么旧的东西添加新帖子,但我遇到了与 GoDaddy 及其 dbname.db.######.hostedresource.com 实现相同的问题。当然,我浏览了一些溢出帖子,并没有看到直接 IP 方法的提及;希望我不会在这里破坏一些 GoDaddy 代码。

任何人,我能够通过我的 Workbench 和通过 JDBC 进行连接的唯一方法是转到 PHP 管理页面并获取数据库的直接 IP - 在我的情况下:

private static final String URL = "jdbc:mysql://11.11.111.11:3306/dbname";
于 2013-11-04T14:38:50.113 回答