使用 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 服务器时出现问题
连接到 sql server 时出现 pyspark jdbc 错误
在 Hortonworks 上使用 Jdbc 远程连接到 Hive 时出现 ClassNotFoundException