IDEA连接docker下的MySQL问题,错误编号[08S01]

项目场景:

今天在玩docker的时候遇到这样一个奇怪的现象,

首先我使用docker部署了MySQL5.7.31的数据库环境,外部使用Navicat连接没有任何问题,我甚至使用Navicat导入了相关数据库,并且完成了查询等相关测试都没有任何问题。于是我便开始愉快的coding之旅,正当我满心欢喜打开IDEA准备连接数据库生成实体类大干一场的时候问题出现了,这个问题犹如晴天霹雳一般,鸽emo...


问题描述

问题:Navicat连接成功,IDEA连接不成功!!!

 错误信息:

Feiled
[08S01]
Communications link failure

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

翻译一下大概就是说:
最后一个成功发送到服务器的数据包是0毫秒前。驱动程序尚未从服务器接收到任何数据包。


原因分析:

OK,从上述信息中我们不难捕捉到问题的关键信息,首先是错误代码 [08S01] ,第二个有用信息就是翻译中的内容有四个字叫做 “驱动程序”,这说明我们连接不成功有很大可能是和驱动程序有关。


解决方案:

试错部分是本人的遭遇,着急解决问题的小伙伴直接往下滑,找到解决方法,相信聪明的你一定能迅速解决自己的问题。

拿到这个问题我的第一反应是去搜搜错误代码 [08S01] 的解决方案,于是我又陷入了无限的烦恼循环。

试错一:首先去检查一下自己的防火墙,值得一提的是由于我在Linux外部宿主机上也安装了MySQL去维护我的个人网站,此时我的3306端口已经被占用,于是我将宿主机的3309端口映射到容器内的MySQL,因此我去检查我的3309端口是否开放(其实我的Navicat可以连接到容器内的MySQL数据库已经可以充分说明我的端口开放正常),注意:有些朋友可能只在服务器上开放了端口并没有在腾讯云开放端口,这种情况下也是没有办法访问的。

试错二:即上述端口问题之后,我又翻到一篇CSDN的文章,大概就是将安全组的问题(这里和解决问题无关,就不贴出来误导大家了),好家伙,让我这个处世未深的小伙子如何应对,涉及到我的只是盲区了,于是又去学习了如何配置安全组的相关知识。emm...没暖用!!!不过就算没有能解决我现有的问题,好在又GET一项新的知识点,收获。

解决方案:在上面经过一系列碰壁之后,我突然想到报错中不是还有一个说是驱动程序的原因嘛!脑瓜子嗡嗡的,咋把这茬给忘了。接下来认真听认真看:首先,我本地安装的数据库的版本是MySQL8.0.13版本的,我容器内安装的是MySQL5.7.31版本的,MySQL5.x版本的驱动名称叫做:com.mysql.jdbc.Driver,而到了MySQL8.x版本以后驱动名变成了:com.mysql.cj.jdbc.Driver,这就是问题所在。我以前用IDEA都是用来连接本地的数据库因此驱动程序默认是MySQL8.x的驱动,于是我们接下来的操作围绕降低驱动版本展开就好了。

 更换驱动之后点击apply然后ok,退出面板打开测试连接应该就没有问题了,不放心的朋友可以重启IDEA更稳健。

总结:至此问题完美解决,绕了一大圈又是被网友教程忽悠瘸的一天!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值