【JAVA进阶篇教学】第八篇:Java链接MySql数据库异常

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 【JAVA进阶篇教学】第八篇:Java链接MySql数据库异常

博主打算从0-1讲解下java进阶篇教学,今天教学第八篇:Java链接MySql数据库异常

本文主要记录下日常项目中java链接mysql异常情况,并且提供解决方案!本文会持续更新,有友友们留言的异常的话,我也会整理提供进去。谢谢大家支持!

ab643c0bbe8041e2a2e5dd4b0fcd0d8a_c93722ef1a144925bbe7d03837719e43.png

一、Communications link failure

具体报错:com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure


Caused by: java.net.ConnectException: Connection timed out: connect

这个问题简单点说就是链接数据库失败,链接超时!

错误原因:

  1. 网络问题: 可能是由于网络不稳定或网络配置问题导致无法建立到数据库服务器的连接。
  2. 数据库服务器未启动: 如果数据库服务器未正确启动或已停止,将无法建立连接。
  3. 防火墙或网络代理问题: 防火墙或网络代理可能阻止了连接尝试,导致连接失败。


解决方案:

  1. 检查网络连接: 你可以在windows中使用cmd中,ping ip地址,如:ping 127.0.0.1,看看是否丢包,如果访问超时或者丢包则代表你访问不了这个ip地址。
  2. 确保数据库服务器运行: 你需要确保下你的windows或者是liunx服务器中mysql服务是否启动。
  3. 检查防火墙和网络代理设置: 如果你能ping通ip地址,但是telnet ip 端口号,例如:telnet 127.0.0.1 3306 不通,这个时候如果开启了防火墙,可能会导致你访问不了3306端口号,另外如果是云liunx服务器,则需要在你的云控制台中安全组或者安全策略中放行3306端口,并且查看下liunx服务器是否开启防火墙,如果没开启则不用管,开启了,则需要添加3306端口白名单。
  4. 检查数据库连接字符串: 确保数据库连接字符串配置正确,包括主机地址、端口号、用户名和密码。可以尝试手动连接数据库以确认连接参数是否正确。


二、Access denied for user

具体报错:java.sql.SQLException: Access denied for user 'root'@'122.235.136.146' (using password: YES)


错误原因:

你访问mysql数据库的账号或者密码错误。


解决方案:

确保数据库连接字符串配置正确,包括主机地址、端口号、用户名和密码。可以尝试手动连接数据库以确认连接参数是否正确。


三、javax.net.ssl.SSLHandshakeException

具体报错:Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)


错误原因:

你的链接mysql字符串中,useSSL=true。

解决方案:

将useSSL=true改成useSSL=false 即可。

例如:

jdbc:mysql://127.0.0.1:3306/bbs?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8


四、mysql8

如果你使用的是mysql8,那么驱动需要更新成8.0.x的。

驱动:com.mysql.cj.jdbc.Driver

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.13</version>
        </dependency>

在设定时区的时候,如果设定serverTimezone=UTC,会比中国时间早8个小时,如果在中国,可以选择Asia/Shanghai或者Asia/Hongkong,或者像下面这样配置:

jdbc:mysql://127.0.0.1:3306/bbs?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8


五、待续

如果有友友们想提供异常也是可以评论留言。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
Java
在 Java 中捕获和处理自定义异常的代码示例
本文提供了一个 Java 代码示例,展示了如何捕获和处理自定义异常。通过创建自定义异常类并使用 try-catch 语句,可以更灵活地处理程序中的错误情况。
59 1
|
1月前
|
Java API 调度
如何避免 Java 中的 TimeoutException 异常
在Java中,`TimeoutException`通常发生在执行操作超过预设时间时。要避免此异常,可以优化代码逻辑,减少不必要的等待;合理设置超时时间,确保其足够完成正常操作;使用异步处理或线程池管理任务,提高程序响应性。
62 12
|
1月前
|
Java
在 Java 中,如何自定义`NumberFormatException`异常
在Java中,自定义`NumberFormatException`异常可以通过继承`IllegalArgumentException`类并重写其构造方法来实现。自定义异常类可以添加额外的错误信息或行为,以便更精确地处理特定的数字格式转换错误。
34 1
|
1月前
|
IDE 前端开发 Java
怎样避免 Java 中的 NoSuchFieldError 异常
在Java中避免NoSuchFieldError异常的关键在于确保类路径下没有不同版本的类文件冲突,避免反射时使用不存在的字段,以及确保所有依赖库版本兼容。编译和运行时使用的类版本应保持一致。
66 7
|
21天前
|
SQL 数据库
gbase 8a 数据库 shm满导致gclusterd进程异常
gbase 8a 数据库 shm满导致gclusterd进程异常
Java基础异常-自定义异常
Java基础异常-自定义异常
Java基础异常-自定义异常
|
Java 编译器
Java中的异常(抛出异常、自定义异常等)
Java中的异常(抛出异常、自定义异常等)
317 1
|
Java 程序员 编译器
Java异常——throw、throws及自定义异常
Java异常——throw、throws及自定义异常
134 0
|
存储 Java 编译器
【Java】认识异常及自定义异常
【Java】认识异常及自定义异常
【Java】认识异常及自定义异常
下一篇
DataWorks