【问题标题】:Connecting to database on server连接到服务器上的数据库
【发布时间】:2016-12-17 12:27:18
【问题描述】:

编辑: 我正在尝试连接到我的数据库,但我被卡住了。 我收到以下错误:

我有一个 mysql 数据库并使用 phpMyAdmin 访问它。

这是我的代码(已更新):

    public class DBConnection 
{
static String user = "ademphotography_dk_financesjava";
public static  String pass = "******";
private static String db = "ademphotography_dk_financesjava";
protected static String url = "jdbc:mysql://ademphotography.dk.mysql";



public static Connection getConnection() 
{
    Connection conn;
    try {
        Class.forName("com.mysql.jdbc.Driver");
        conn = (Connection) DriverManager.getConnection(url+"/"+db, user, pass);

        return conn;
    } catch(Exception e) {
        e.printStackTrace();
        return null;
    }
}

我已经尝试使用主机的 IP:

 Protected static String url = "jdbc:mysql://XX.XX.X.XX:3306";

但这反而导致了这个错误(但现在我对“未知主机”没有问题):

 Caused by: java.net.ConnectException: Connection timed out: connect

【问题讨论】:

  • 我相信您可以在输出中看到一些异常?你也可以发布堆栈跟踪吗?
  • URL 中不需要端口(如 3306)吗?看看这里:dev.mysql.com/doc/connector-j/5.1/en/…
  • “我被卡住了”提供的关于您所观察到的行为的有用信息非常少。是否返回 MySQL 错误?客户端能否将主机名解析为 IP 地址?进程是否挂起? mysql 命令行客户端或任何其他客户端可以从同一台机器连接吗? (@ArthurNoseda:端口应该是可选的。如果没有提供,它应该默认为 3306,并且只有在 MySQL 运行的端口不是 3306 时才需要提供。
  • @ArthurNoseda 不,你没有。将使用默认端口 (3306)。
  • 这是我得到的错误信息:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 最后一个成功发送到服务器的数据包是 0 毫秒前。驱动没有从服务器收到任何数据包。

标签: java mysql phpmyadmin


【解决方案1】:

这不是 Java 表达式:

url+db

返回这个字符串:

jdbc://ademphotography.dk.mysqlademphotography_dk_financesjava

您似乎需要在数据库名称前添加一个斜线字符。

我希望没有斜线,整个字符串“ademphotography.dk.mysqlademphotography_dk_financesjava”将被视为主机名。

【讨论】:

  • 你说得对。我现在看到了。我刚刚尝试在它们之间加上斜线,但现在我收到了这个错误:java.sql.SQLException: No suitable driver found for jdbc://ademphotography.dk.mysql/ademphotography_dk_financesjava
  • 好像你缺少“mysql:”...jdbc:mysql://hostname
  • 我已经更新了,Spencer7593 :) ... 仍然没有运气。我仍然收到“com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure”错误。
  • 我认为您需要重新列出整个代码块。还要意识到,由于硬件或网络问题,通信链路故障可能是暂时的问题。
【解决方案2】:

连接必须是格式

jdbc:mysql://server/database

在您的示例中,请更新以下两行:

      protected static String url = "jdbc:mysql://ademphotography.dk.mysql";

...

      conn = (Connection) DriverManager.getConnection(url+"/"+db, user, pass);

[编辑:更正了错误的代码行]

【讨论】:

  • 我已经更新了这两行,谢谢。但是,它并没有解决问题。我现在收到以下错误:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 最后一个成功发送到服务器的数据包是 0 毫秒前。驱动没有从服务器收到任何数据包。
  • 服务器是否已启动并正在运行,您是否有权访问它(防火墙、用户名等)?你可以从命令行访问它吗?
  • 是的,它已启动并正在运行,我可以完全访问它。我以为我的 jdbc 可能没有包含在我的构建路径中,但我已经三重检查了,那里没有任何问题……这让我拔掉了头发,哈哈。
  • 您在运行代码时是否看到任何其他错误输出?应该有来自 try/catch 的堆栈跟踪?
  • "Caused by: java.net.UnknownHostException: ademphotography.dk.mysql" 就是这样......显然它表明主机有问题,但我真的不明白为什么。在 PhpMyAdmin 中,它告诉我主机是 ademphotography.dk.mysql。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-27
  • 2014-08-07
  • 2016-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多