当前位置: 首页 > 知识库问答 >
问题:

无法使用Java JDBC连接到MySQL数据库

司徒阳曜
2023-03-14

我创建了一个简单的类来测试与我的localhost数据库的通信,这是我用Mysql Workbench创建的。Mysql服务器正在运行。JDBC驱动程序被添加到我的项目的类路径中。

public class Database
{
    public static void main(String[] args)
            throws SQLException, ClassNotFoundException
    {
        Connection connection = null;
        String serverName = "localhost:3306";
        String databaseName = "detector_tests";
        String url = "jdbc:mysql://" + serverName + "/" + databaseName
                + "?useSSL=TRUE";

        String username = "simon";
        String password = "password123";
        connection = DriverManager.getConnection(url, username, password);
    }
}

当我运行程序时,我得到以下异常:

线程“main”com.mysql.cj.jdbc.Exceptions.CommunicationsException异常:通信链接失败

最后一个成功发送到服务器的数据包是在0毫秒前。驱动程序没有从服务器接收到任何数据包。在com.mysql.cj.jdbc.exceptions.sqlerror.createCommunicationsException(sqlerror.java:172)在com.mysql.cj.jdbc.exceptionsqlexceptionsmapping.translateException(sqlexceptionsmapping.java:64)在com.mysql.cj.jdbc.connectionimpl.createWIO(connectionimpl.java:862)在com.mysql.cj.jdbc.connectionimpl(connectionimpl.java:444)在

看来我需要添加某种证书什么的。我不确定,因为我对数据库很陌生。有相同经历或解决方案的人吗?如果你需要更多的信息,我很乐意编辑这篇文章。

提前道谢!

共有1个答案

戚鸿福
2023-03-14

似乎您正在尝试连接mysql数据库和证书。如果您是通过TLS连接到MySQL实例,则需要有一个信任存储来保存您的证书。请参阅本文档以创建MySQL连接和TLS连接。

但是,您可以通过在MySQL连接URL中为“usessl”设置FALSE来忽略TLS验证。您的代码如下所示。

public class Database
{
    public static void main(String[] args)
            throws SQLException, ClassNotFoundException
    {
        Connection connection = null;
        String serverName = "localhost:3306";
        String databaseName = "detector_tests";
        String url = "jdbc:mysql://" + serverName + "/" + databaseName
                + "?useSSL=FALSE";

        String username = "simon";
        String password = "password123";
        connection = DriverManager.getConnection(url, username, password);
    }
}
 类似资料:
  • 我无法使用客户机SquirrelSQL连接到MySQL。我以前曾设法连接到Oracle和Derby,但这次,我不知道我做错了什么。 我已经在我的Mac上安装了MySQL,以下步骤: > 要确保安装安全,请执行以下操作: 要创建新数据库: 要知道数据库存储在哪里: 创建一个表 在我遵循这些步骤之后: MySQL安装在/usr/local/ceral/MySQL/5.6.17下 在SQuirreL中,

  • 我在Spring是全新的,在Spring Hibernate无法连接到我的MySQL数据库。我得到 请求处理失败;嵌套异常为:org.springframework.transaction.CanNotCreateTransactionException: 无法打开事务的JPA EntityManager;嵌套异常为javax.persistence.persistenceException:or

  • 当我在Postman中点击url(http://localhost:8080/pjt/samples)以获取json数据时,它显示以下错误。 1)pom.xml 2)模型: .________/\/'___()____\\\\(()_'_''/'\\\\\\\/))()))'___.__,////===================================================

  • 我无法连接到MySQL数据库。它发生在更新MySQL和JDK之后。我添加了,但没有结果。这是我从eclipse中得到的一个例外: 不建议在没有服务器身份验证的情况下建立SSL连接。根据MySQL 5.5.45、5.6.26和5.7.6的要求,如果未设置explicit选项,默认情况下必须建立SSL连接。为了符合不使用SSL的现有应用程序,verifyServerCertificate属性设置为“f

  • 我正在尝试连接我的android应用程序,该应用程序使用php将登录页面连接到数据库。它正在连接到数据库。但它并不是从表中检索所有列。相反,只获取两个冒号。下面是代码 请帮我解决这个问题。 这里是登录表单的PHP代码 我的logcat显示以下错误。 但它显示点击提交按钮后停止工作,我需要检索数据显示在Android模拟器上 包com。实例主要的导入java。木卫一。缓冲读取器;导入java。木卫一

  • 我最近做了一个项目,涉及使用java中的Swing在线连接到mysql数据库。然后我决定将项目转换为javaFX并尝试复制代码以连接到mysql数据库。 这是我的代码: 这是FXML文件的代码 然而,当我点击运行时,它就崩溃了,我得到错误“JavaSE二进制平台已经停止工作”。它在我以前使用摆动的应用程序中工作得很好。切换到javafx时,我所做的唯一改变是我使用了jdk 1.8而不是jdk 11