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

这不适用于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]:连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接的主机未能响应而build立连接失败。

这工作:

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

我想知道是否有这样做,从PHP文档 :

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

这是从我的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到主机文件使其工作。 但为什么这是必要的?

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

你只是无法通过PHP连接,或者你不能从命令行建立连接到MySQL? 如果根本无法连接,请验证服务正在运行并正在侦听端口3306。

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

要么

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

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

用PHP提交了一个bug 。 问题在于MySQL,并且与它无法正确连接到一个域的所有可能的IP地址 。

解? 如果不是绝对必要的,不要使用主机名连接到数据库。 这也可能对业绩产生积极的影响 。

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