这周工作内容比较少,想的事情比较多就只分享一个踩到的坑吧。

MySQL 死锁问题?

一次开发中,数据库结构做了修改,于是连接上 MySQL 数据库,执行了 alter 语句,但是很多之后都没有反应。估计是数据库断开了连接,于是 ctrl + c 中断操作,之后再退出 client ,重新登录数据库,重新执行。

重新执行的结果依旧是卡死在那,甚至连 select 语句都卡死了。

好嘛那我就 drop table -> 卡死 好嘛那我就 drop database -> 卡死

奇怪的是,其他数据库访问都很正常。

后来我觉得应该是第一次操作发生死锁(或者类似的情况)。

执行 show processlist; 。 果然我所有的命令都显示 Queue,然后 kill 掉对应的 pid。

问题解决。

MySQL localhost 问题

再补充之前遇到的一个问题。

同样采用 MySQL 做数据库。有一次采用 Slim 框架,Doctrine 做数据模型层的框架。但是每次页面请求都需要 1s 以上。但是以为是 ORM 的缘故,于是只用 mysql_query 来执行操作,同样是每次请求都需要 1s 以上。

原因是这样的,MySQL 默认情况下是开启了域名解析功能,如果 host 是域名,就会自己解析一遍。 在坑爹的是,win7 环境下,localhost 默认是没有写在 hosts 文件里。于是 host = localhost 的时候,MySQL 在 hosts 里找不到对应规则,自行进行了解析。于是造成了每次请求都很久的情况。

解决办法就很明朗了,在 hosts 里添加 localhost 的规则,或者采用 ip 作为 host。