赞
踩
今天在玩docker的时候遇到这样一个奇怪的现象,
首先我使用docker部署了MySQL5.7.31的数据库环境,外部使用Navicat连接没有任何问题,我甚至使用Navicat导入了相关数据库,并且完成了查询等相关测试都没有任何问题。于是我便开始愉快的coding之旅,正当我满心欢喜打开IDEA准备连接数据库生成实体类大干一场的时候问题出现了,这个问题犹如晴天霹雳一般,鸽emo...
问题:Navicat连接成功,IDEA连接不成功!!!
错误信息:
Feiled
[08S01]
Communications link failureThe 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更稳健。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。