【问题标题】:Can't connect to godaddy MySQL with java无法使用java连接到godaddy MySQL
【发布时间】:2012-10-03 18:28:26
【问题描述】:

我正在尝试连接到 mysql 数据库,但我不断收到错误消息: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障

我知道网址应该是:“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。那是什么意思?我需要吗?

谢谢

【问题讨论】:

  • 我无法在工作中查找 GoDaddy,但该 URL 字符串中的某处必须将 MySQL 数据库标识为您的 MySQL 数据库。 server-url 太通用了。
  • 很大程度上取决于您的 GoDaddy 配置。通常,它们将与其数据库服务器的连接仅限于其内部网络。因此,如果您没有在 GoDaddy 服务器上运行 Java 代码,您可能会遇到通过他们的防火墙连接的问题。

标签: java mysql sql sql-server database


【解决方案1】:

您需要将数据库名称放在 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”字符串值

【讨论】:

  • 你确定你使用的是数据库名而不是表名吗?在上面发布完整(工作)类文件...一秒
  • String url = "jdbc:mysql://" + host + ":3306/" + datab; 正是我所需要的。谢谢!
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

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

    private static final String URL = "jdbc:mysql://11.11.111.11:3306/dbname";
    

    【讨论】:

      猜你喜欢
      • 2017-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-03
      • 2018-11-30
      • 2015-07-04
      • 2018-03-08
      • 2022-01-18
      相关资源
      最近更新 更多