当前位置: 首页 > article >正文

记一次数据库连接 bug

整个的报错如下:

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
at com.mysql.jdbc.Util.getInstance(Util.java:408)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861)
at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2105)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2030)
at com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:778)
at com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:386)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:330)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at com.baomidou.mybatisplus.generator.config.DataSourceConfig.getConn(DataSourceConfig.java:171)
at com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder.handlerDataSource(ConfigBuilder.java:287)
at com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder.(ConfigBuilder.java:139)
at com.baomidou.mybatisplus.generator.AutoGenerator.execute(AutoGenerator.java:88)
at cn.itcast.haoke.generator.CodeGenerator.main(CodeGenerator.java:106)
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet successfully received from the server was 1 milliseconds ago. The last packet sent successfully to the server was 1 milliseconds ago.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:990)
at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:201)
at com.mysql.jdbc.MysqlIO.negotiateSSLConnection(MysqlIO.java:4914)
at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1663)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1224)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2199)
at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2046)
… 17 more
Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
at sun.security.ssl.HandshakeContext.(HandshakeContext.java:171)
at sun.security.ssl.ClientHandshakeContext.(ClientHandshakeContext.java:106)
at sun.security.ssl.TransportContext.kickstart(TransportContext.java:245)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:410)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:389)
at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:186)
… 22 more
Exception in thread “main” java.lang.NullPointerException
at com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder.getTablesInfo(ConfigBuilder.java:469)
at com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder.handlerStrategy(ConfigBuilder.java:301)
at com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder.(ConfigBuilder.java:146)
at com.baomidou.mybatisplus.generator.AutoGenerator.execute(AutoGenerator.java:88)
at cn.itcast.haoke.generator.CodeGenerator.main(CodeGenerator.java:106)

在这里插入图片描述
最最主要的就是这个位置的报错,这个信息是关于 MySQL 数据库在不同版本中对 SSL 连接的默认要求。具体来说,从 MySQL 5.5.45、5.6.26 和 5.7.6 版本开始,如果在连接字符串中没有明确指定 SSL 选项,MySQL 会默认要求建立 SSL 连接。这意味着,如果你的客户端(如 Java 应用程序)在连接 MySQL 数据库时没有明确指定 SSL 选项,连接可能会失败,因为服务器会要求使用 SSL 加密连接

解决方法:
在开发环境下大家直接在链接的位置这样设置就好,将userSSL设置为false

jdbc:mysql://localhost:3306/your_database?useSSL=false&serverTimezone=UTC

如果在生产环境,一定记得使用 SSL 认证的方式去连接


http://www.kler.cn/a/507465.html

相关文章:

  • Java中的依赖注入是什么?它如何工作?
  • 目标检测新视野 | YOLO、SSD与Faster R-CNN三大目标检测模型深度对比分析
  • 10 为什么系统需要引入分布式、微服务架构
  • C# .NetCore 使用 Flurl.Http 与 HttpClient 请求处理流式响应
  • 类模板的使用方法
  • C#与Vue2上传下载Excel文件
  • RabbitMQ介绍以及基本使用
  • Python从0到100(八十四):神经网络-卷积神经网络训练CIFAR-10数据集
  • 反转字符串中的单词 II:Swift 实现与详解
  • Qt之登录界面(splash)
  • PCL 计算点云的均值与标准差【2025最新版】
  • ASP.Net Identity + IODC 解析ReturnUrl
  • 【无线感知会议系列-21 】无线感知6G 研究愿景
  • 电气工程中的计算智能
  • Springboot(五十八)SpringBoot3使用Redisson实现接口的限流功能
  • .Net Core微服务入门全纪录(二)——Consul-服务注册与发现(上)
  • Spring boot学习文档
  • Linux 内核自旋锁spinlock(一)
  • 基于单片机的智能火灾报警系统设计
  • 远程桌面使用是TCP还是UDP?
  • LLM - 大模型 ScallingLaws 的迁移学习与混合训练(PLM) 教程(3)
  • Mysql常见问题处理集锦
  • PTA L1-039 古风排版
  • Bootstrap 下拉菜单
  • 【Redis】Redis大key的危害及解决方案分享
  • WordPress内容保护策略:如何反击并利用被盗内容