大概一个多月前起,笔者电脑上正在开发的PHP程序不知道什么原因,全部都不能连接MySQL服务器了,首先是页面加载很长一段时间,然后扔出错误:“由于连接方在一段时间后没有正确答复或连接的主机没有反应”。
这个问题困扰了笔者一个多月,先是重新安装了PHP,然后是MySQL,最后连Apache也重装了,问题依旧。
今天发誓不解决问题不吃饭了,于是新建一个PHP网页,代码就一句mysql_connect('localhost', 'root', 'XXXXXX');,依旧是那个错误。
尝试用命令行方式登陆MySQL,在CMD里定位到MySQL所在目录下运行mysql -uroot -pXXXXXX,登陆成功,执行show databases;成功显示所有数据表,SQL语句也可以执行正常。问题似乎不是出在MySQL本身。
仔细分析,问题应该出在PHP和MySQL之间的地方。尝试关闭防火墙,问题依旧。无奈把这段错误信息Google,在一堆帖子中找到了一句话:“把localhost换成127.0.0.1试试。”突然眼前一亮,立刻改代码,问题解决。
抱着试试看的心态,打开CMD试着ping了一下localhost,结果触目:
C:\Documents and Settings\XiNGRZ>ping localhost
Pinging XINGRZ-PC [::1] with 32 bytes of data:
Reply from ::1: time<1ms
Reply from ::1: time<1ms
Reply from ::1: time<1ms
Reply from ::1: time<1ms
Ping statistics for ::1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
于是这应该是新问题了,不知道什么原因,localhost被解析到了一个不存在的地址——确切地说根本就不是一个IP地址——::1:。查看hosts文件,依旧是127.0.0.1没有异常。能造成这种错误肯定是比较底层的东西出错,防火墙?不敢肯定,笔者电脑上只有360安全卫士,不知道各位有没有遇到同样问题。
更新:从Ping地址可以发现这是IPv6地址的格式,暂时没有办法解决
有话要说