【问题标题】:A problem connecting to a MySQL DB using JDBC使用 JDBC 连接到 MySQL 数据库时出现问题
【发布时间】:2011-05-28 11:52:58
【问题描述】:

这是我尝试连接的方式:

try {
   Class.forName("com.mysql.jdbc.Driver").newInstance();
   } catch (Exception e) {
      throw new DbConnectionException();
   }
   try {
      connection = DriverManager.getConnection(url,username,password);
   } catch (SQLException e) {
      e.printStackTrace();
      throw new DbConnectionException();
   }

我 100% 确定 url、用户名、密码字符串是正确的。我已经使用外部工具(MySQL 查询浏览器)成功连接。 这是我收到的错误:

com.mysql.jdbc.CommunicationsException: 由于通信链路故障 基础异常:

** 开始嵌套异常 **

java.net.SocketException 消息: java.net.ConnectException:连接 拒绝

...

【问题讨论】:

  • MySQL 服务器是否正在运行?端口是否被防火墙畅通?
  • 防火墙阻止了您的 MySQL 端口?尝试解锁它。
  • @精英:对不起。我的意思是是的。是的。

标签: java sql mysql jdbc connection


【解决方案1】:

您是否从运行代码的同一台机器上运行 mysql 浏览器?我得到的是 mysql 中的权限可以是特定于主机的,并且根据您设置它们的方式,您可能无法从运行代码的机器连接。

此外,您可能需要再次仔细检查 url、名称、pword,可能使用日志语句或调试器以确保没有拼写错误、尾随空格等...

【讨论】:

    【解决方案2】:

    仔细检查您的网址格式。它应该以“jdbc:mysql:”开头。确保您也使用当前版本的驱动程序。

    【讨论】:

    • 确实是网址问题。原来我有另一段代码试图连接到另一个数据库并导致了问题。很抱歉 100% 确定有问题。
    【解决方案3】:

    可能是url 问题。如果您的代码指向 MySQL localhost,请尝试将您的 url 上的 localhost 更改为 127.0.0.1

    例如:

    jdbc:mysql://localhost:3306/MY_DB
    

    jdbc:mysql://127.0.0.1:3306/MY_DB
    

    看看这是否有效。

    【讨论】:

    • 确实是网址问题。原来我有另一段代码试图连接到另一个数据库并导致了问题。很抱歉 100% 确定有问题。
    【解决方案4】:

    检查你是否可以从mysql管理工具连接到数据库,这将驱动你的mysql是否正在运行并且端口是否打开。

    【讨论】:

      【解决方案5】:

      就我而言,问题在于我使用的是从模拟器到本地主机的连接。

      如果你使用模拟器到本地主机,不要在连接字符串中使用localhost值,而是使用10.0.2.2

      jdbc:mysql://10.0.2.2:3306/MY_DB
      

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 2011-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多