2

这不适用于我在 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 文档

每当您指定“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。当然我可以改成localhost127.0.0.1但我想知道为什么我不能使用localhost


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

4

4 回答 4

1

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

也可以尝试将localhost改成:127.0.0.1:3306

或者

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

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

于 2010-10-25T14:00:12.010 回答
1

尝试添加127.0.0.1 localhostC:\Windows\System32\drivers\etc\hosts?

于 2010-10-25T14:04:18.297 回答
1

提交了一个 PHP 错误。问题出在 MySQL 上,并且与它没有正确连接到域的所有可能 IP 地址有关

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

于 2010-10-26T08:06:17.560 回答
-1

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

于 2010-12-06T00:59:52.140 回答