【问题标题】:Connecting to MySQL DB in Java在 Java 中连接到 MySQL 数据库
【发布时间】:2017-02-03 02:06:30
【问题描述】:

我正在通过 000WebHosting.com 运行数据库。当我尝试连接到我的数据库时,我收到以下错误:

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.

这是我的代码:

String url = "jdbc:mysql://" + "mysql2.000webhost.com/";
try
{
    Class.forName("com.mysql.jdbc.Driver").newInstance();
    Connection conn = DriverManager.getConnection(url + "DB_NAME", userName, passWord);
} 
catch (InstantiationException | IllegalAccessException | SQLException e)
{
    System.out.println(e);
}

conn 行上继续出现异常。

我做错了什么?

【问题讨论】:

  • 您实际上没有连接。检查您的数据库 url 并确保它是正确的。
  • 我非常怀疑该地址上的端口是否打开,等待您的连接,或者它已被授权用于数据库

标签: java mysql database web-hosting


【解决方案1】:
  1. 检查您的 MySQL 数据库服务器是否已托管/up/on。
  2. 检查输入的连接数据库的用户名和密码是否正确。
  3. 检查是否在构建路径和 Web 服务器的 lib 文件夹中包含 MySQL jar 文件,例如雄猫
  4. 检查连接数据库的 URL 是否正确。

也做此更改并查看

字符串 url = "jdbc:mysql://mysql2.000webhost.com/";

我也发现了这个

来自 000webhost 的 MySQL 不允许您从外部应用程序进行连接,只能从其域中托管的页面内进行连接。

请查看:How can I connect to MySQL from my computer?

【讨论】:

  • 看来我需要再找一个主机。他们对远程访问收费。
【解决方案2】:

尝试像这样初始化您的数据库连接(将您的数据库名称放在 URL 中):

final static String HOSTNAME = "yourdomain.com";
final static String PORT = "3306";
final static String USER = "youruser";
final static String PWD = "yourpassword";
final static String DBNAME = "dbname";

public java.sql.Connection setupConnection() {

    java.sql.Connection conn = null;

    try {
        Class.forName("com.mysql.cj.jdbc.Driver");
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }

    System.out.println("Connection is being established...");

    String url = "jdbc:mysql://" + HOSTNAME + ":" + PORT + "/" + DBNAME +
                "?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";
    try {
        conn = DriverManager.getConnection(url, USER, PWD);
    } catch (SQLException e) {
        e.printStackTrace();
    }

    System.out.println("Database connection successfully established!");

    return conn;
}

【讨论】:

    猜你喜欢
    • 2022-01-01
    • 2015-02-06
    相关资源
    最近更新 更多