【报错】Root Cause com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

本文介绍了在Linux环境下部署web项目时遇到的两个数据库连接问题。问题一是由于MariaDB未启动导致的数据库连接失败,解决方案包括检查配置、路径、端口,并通过`systemctl`命令启动和设置开机自启MariaDB。问题二是数据库连接超时,可通过增加配置参数`autoReconnect=true`和`failOverReadOnly=false`尝试解决,或调整数据库连接超时时间。

🤞目录🤞

💖1. 报错情况一:

1.1 检查配置

1.2 检查路径

1.3 检查端口 

1.4 检查 mariadb 是否启动

💖2. 报错情况二:  

2.1 检查配置


【大家好,我是爱干饭的猿,如果喜欢这篇文章,点个赞👍,关注一下吧,后续会持续分享每日一题和SSM其他重要知识点总结

上一篇文章:《【web】理解 Cookie 和 Session 机制》


用 Linux 部署 web 项目的测试过程中遇到了这个错误。

🧨1. 报错情况一:

根据提示:

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

从上次成功发送到服务器的数据包是0毫秒前。驱动程序尚未从服务器收到任何数据包。

说明这个数据库是远程连接的爆出这个错误的,原因是 mysql 数据库远程连接中断设定的默认查询执行失败。

分析原因:检查自己本地数据库连接是否正确

解决方案:1. 检查配置:检查在xml中对mysql配置的jdbc。

                  2. 检查路径:jdbc 连接 mysql 时的url 书写是否正确。

                  3. 检查端口:一般端口没啥问题。

                  4. 检查 mariadb 是否启动。(我就是没设置开机自启动,导致不能正确连接)

1.1 检查配置

url: jdbc:mysql://127.0.0.1:3306/数据库名称?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai

1.2 检查路径

1.3 检查端口 

1.4 检查 mariadb 是否启动

打开 Xshell 7 连接到自己的云服务器

mysql -uroot -p 连接数据库 

发现报错:Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'

找到原因:可能是 mariabd (mysql) 未启动 

systemctl start maridb 启动mariadb

ps aux | grep mariadb 检查进程

 确实是 mariabd (mysql) 未启动导致。

扩展:

  • systemctl start mariadb      启动
  • systemctl stop mariadb      关闭
  • systemctl enable mariadb  设置开机自启

 再次连接mysql。

mysql -uroot -p 连接数据库 

 连接数据库成功。

访问部署好的网站:

访问成功,报错解决成功。


🧨2. 报错情况二:  

 

根据提示:

The last packet successfully received from the server was 1,302 milliseconds ago

从服务器成功接收到的最后一个数据包是1302毫秒前。

2.1 检查配置

解决方法如下:

  1. 修改数据库连接配置在数据库连接上,加“&autoReconnect=true&failOverReadOnly=false”配置,但是mysql4以下的版本有效,mysql5以上的无效。
  2. 修改数据库连接有效时间,在数据库配置上设置,把数据库连接有效时间设置长一点,比如设置12小时或者24小时。**方法:**在MySql的配置文件my.ini或者mysql.xml的配置文件里边加上interactive_timeout=388000和wait_timeout=388000即可!

第一个问题的错误,需要把数据库连接配置德的useSSL=true改成useSSL=false 

MySQL在高版本需要指明是否进行SSL连接。

  • true 需要连接
  • false 不需要连接

使用JDBC跟你的数据库连接的时候,你的JDBC版本与MySQL版本不兼容,MySQL的版本更高一些,在连接语句后加上“useSSL=‘true’” ,就可以连接到数据库了。


本次分享就到这里,如果你喜欢这篇文章,请点赞关注吧,或者如果你对文章有什么困惑,可以私信我。

🏓🏓🏓 

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱干饭的猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值