使用 JDBC 连接到 MySQL 数据库时出现问题

Posted

技术标签:

【中文标题】使用 JDBC 连接到 MySQL 数据库时出现问题【英文标题】:A problem connecting to a MySQL DB using JDBC 【发布时间】: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 端口?尝试解锁它。 @精英:对不起。我的意思是是的。是的。 【参考方案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

希望这会有所帮助。

【讨论】:

以上是关于使用 JDBC 连接到 MySQL 数据库时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

在 openshift 上将 jdbc 连接到 MySql 服务器时出现问题

将 JDBC 驱动程序连接到 MSSQL 数据库时出现问题

连接到 sql server 时出现 pyspark jdbc 错误

在 Hortonworks 上使用 Jdbc 远程连接到 Hive 时出现 ClassNotFoundException

使用 JDBC 连接到 MySQL 数据库

连接到大学服务器时出现 JDBC 连接问题