上次重装win7系统之后,我发现很多场景下无法连接数据库。发现是因为localhost无法连接到数据库,不过127.0.0.1可以。
今天在回顾之前的一个项目时,也发现无法连接数据库。秉着“遇到问题一定要及时解决”、“不拖延”的想法,这次终于找到了问题所在。其实,并不是什么很难的问题。
如果你也碰到这个问题,我觉得你还是不要再去搜索了,因为我看了很多,发现有很多原因会导致这个问题。所以最好的解决方法就是自己找到问题所在。
我的问题关键是hosts文件的设置。在一开始配置时,我设置了
127.0.0.1 localhost
::1 localhost
因此,localhost并没有解析到127.0.0.1上。同时数据库设置拒绝::1访问。
期间还有一个问题是apache虚拟主机的设置。因为我设置过虚拟主机,所以在上面将localhost解析到127.0.0.1后,却发现localhost访问的不是默认的www目录。原来虚拟主机<VirtualHost>标签配置后,默认的'main'配置会被覆盖。所以需要把localhost的配置也加入到新的<VirtualHost>。另外,当一个请求没有匹配的ServerName,会默认去访问第一个<VirtualHost>标签。