<br />
<a name="8Lvkk"></a>
故障现象
<br />今天本地项目怎么都启动不了,查看日志发现是连接本地数据库超时,报错信息如下:<br />
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
<a name="57Pc9"></a>
排查过程
<br />首先查看代码,发现也没有修改到数据库相关的内容,突然出现有点诡异。<br /> <br />转念一想会不会是数据库出了问题,果然,使用数据库管理工具 Datagrip 连接的时候也报了同样的错误,所以基本确定是 mysql 出了问题。<br /> <br />首先查看 **brew **安装的本地 mysql 服务的状态,这里有三种方法查看:<br />
- 通过
ps
命令
ps -ef | grep mysql
<br />通过 ps
命令加 grep
过滤,可以查看是否有 msyql 进程在进行。<br />
- 通过
lsof
命令
lsof -i:3306
<br />也可以通过 lsof
命令,查看指定端口有没有启动,我当时创建的时候用的默认端口 3306 端口,如果你设置了其它端口,可以改成对应的<br />
- 通过 brew 的
services
查看(推荐)
<br /> brew 的 services
是用来管理后台服务命令,它主要有如下功能:<br />
好的,直接使用 brew services
命令看看 mysql 的状态<br />
<br /><br />
<br />可以看到列出的状态通常有三种,分别是:<br />
- stopped
- 黄色的 started
- 绿色的 started
<br />其中 stopped 没啥好说的就是此服务是关闭的。那黄色的与绿色的 started 分别代表什么呢?首先绿色的 started 代表服务是启动的并且正常运行。黄色查了半天,发现代表未知,也就是说可能正常启动着,也可能出现问题,那为什么不直接显示未知呢?看样子是为了兼容,具体可以看这篇文章 [What is the meaning yellow service "started" status on Homebrew? - Stack Overflow](https://stackoverflow.com/questions/41873704/what-is-the-meaning-yellow-service-started-status-on-homebrew/55798920 "What is the meaning yellow service "started" status on Homebrew? - Stack Overflow")。<br /> <br />很不幸的是,这个黄色对我来说是故障。<br />
<a name="gsS9g"></a>
解决方法
<br />本来想重启一下就可以了,首先重启 mysql 服务: brew services restart mysql
,结果重启完还是不行。然后我重启电脑,好吧,还是失败。<br />
<br />接着搜索。<br />
<br />在 google 搜索 brew services yellow mysql 可以发现不只我一个人遇到。很多人给了解决方案,但是还是折腾了很久,才找到对于我有用的,这里直接贴两个。<br />
<br /> <br />这个方案大致是关服务、卸载服务、删除服务数据、升级 brew 、再重新安装服务。我主要看他评论下面两个 Thanks 觉得应该可以,结果还是不行。可能不适合我这种情况。<br />
- 完全重装 mysql
<br />但是重装之路也很艰难,怎么都启动不了,出现了其它问题。应该是没有卸载干净,后来按照这个 brew install mysql on macOS - Stack Overflow 解决了。<br /> <br /><br /> <br />发现之前没有使用 remove & cleanup 命令,可能导致没有卸载干净。按步骤一步一步来就好了。<br /> <br />😔 难受,莫名其妙出现的问题,折腾了几个小时,谨以此文纪念我逝去的几个小时的青春。<br />
<a name="TMjCJ"></a>
引用
- [What is the meaning yellow service "started" status on Homebrew? - Stack Overflow](https://stackoverflow.com/questions/41873704/what-is-the-meaning-yellow-service-started-status-on-homebrew/55798920 "What is the meaning yellow service "started" status on Homebrew? - Stack Overflow")
- homebrew - brew services list shows mysql running but cannot connect - Stack Overflow
- brew install mysql on macOS - Stack Overflow
来源:oschina
链接:https://my.oschina.net/u/2344194/blog/4650530