mysql_connect不能与我的Windows机器上的localhost一起使用

时间:2010-10-25 13:57:33

标签: mysql windows localhost mysql-connect

这不适用于WAMP / Windows 7上的PHP 5.3.3安装:

mysql_connect('localhost', 'root', '');

Maximum execution time之后,会出现此错误:

  

警告:mysql_connect()[function.mysql-connect]:[2002]连接尝试失败,因为连接方没有(尝试通过tcp:// localhost:3306连接)

     

警告:mysql_connect()[function.mysql-connect]:连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接主机无法响应而建立连接失败。

这有效:

mysql_connect('127.0.0.1', 'root', '');

我想知道它是否与此有关,来自PHP docs

  

每当您指定“localhost”或“localhost:port”作为服务器时,MySQL客户端库将覆盖此并尝试连接到本地套接字(Windows上的命名管道)。如果要使用TCP / IP,请使用“127.0.0.1”而不是“localhost”。如果MySQL客户端库尝试连接到错误的本地套接字,则应在PHP配置中设置正确的路径,并将服务器字段留空。

这是来自我的php.ini:

; Default socket name for local MySQL connects.  If empty, uses the built-in
; MySQL defaults.
; http://php.net/mysql.default-socket
mysql.default_socket =

这是一个错误,还是发生了什么?


更新:我正在使用MySQL 5.1.36,否则我可以连接到它。忘了提,但这适用于PHP 5.3.0和5.2.11。当然,我可以将localhost更改为127.0.0.1,但我想知道为什么我不能使用localhost


更新2 :向主机文件添加(取消注释)127.0.0.1 localhost使其正常工作。但为什么这有必要呢?

4 个答案:

答案 0 :(得分:1)

您是否只是在通过PHP连接时遇到问题,或者您是否也无法从命令行建立与MySQL的连接?如果您根本无法连接,请验证服务是否正在运行并侦听端口3306。

您还可以尝试将localhost更改为:127.0.0.1:3306

或者

$ cfg ['Servers'] [$ i] ['host'] ='localhost';

$ cfg ['Servers'] [$ i] ['host'] ='127.0.0.1';

答案 1 :(得分:1)

尝试将127.0.0.1 localhost添加到C:\Windows\System32\drivers\etc\hosts

答案 2 :(得分:1)

使用PHP提交a bug。问题出在MySQL上,与not correctly connecting to all possible IP addresses for a domain有关。

解决方案?如果不是绝对必要,请不要使用主机名连接到数据库。这可能还有一个积极的impact on performance

答案 3 :(得分:-1)

这实际上是php_mysql驱动程序中的一个错误。见http://bugs.php.net/bug.php?id=48082