【问题标题】:mysql_connect doesn't work with localhost on my Windows machinemysql_connect 不适用于我的 Windows 机器上的 localhost
【发布时间】:2011-04-30 05:43:18
【问题描述】:

这不适用于我在 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:在 hosts 文件中添加(取消注释)127.0.0.1 localhost 使其工作。但为什么有必要这样做呢?

【问题讨论】:

  • 这可能是存储套接字的目录的服务器配置问题...为什么不直接使用 127.0.0.1 地址?
  • 你使用的是什么版本的 mySQL?
  • 更新了问题以希望澄清
  • 只是好奇,当你使用 PDO 类时会发生什么? (php.net/manual/en/pdo.construct.php)。 mysqli (php.net/manual/en/function.mysqli-connect.php) 呢?如果其中任何一个工作正常,那么这口井可能是一个糟糕的库更新。您是否尝试将 .so/.dll 从 PHP 5.3.0 复制到 5.3.3?
  • PDO 和 mysqli 都不起作用,并且复制旧 dll 损坏了 mysql_connect

标签: mysql windows localhost mysql-connect


【解决方案1】:

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

【讨论】:

  • 太棒了,这确实有效。但我不应该添加它,你为什么要这么想?
  • 将他的问题标记为已回答,我会告诉你。
【解决方案2】:

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

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

或者

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

到

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

【讨论】:

  • 还有一个选项:取消注释 # 127.0.0.1 localhost 在:C:/Windows/System32/drivers/etc ;-)
  • 在 Windows 7 中 ip:127.0.0.1 默认不存在。通过取消注释# 127.0.0.1,你让它存在。只是微软的一个小错误。
  • 不,不是微软的错误,而是 MySQL 的错误:blogs.iis.net/donraman/archive/2010/06/11/…
【解决方案3】:

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

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

【讨论】:

  • 请注意,您提交的错误已被关闭为“不是错误”。我认为这更像是一个 MySQL 问题。
【解决方案4】:

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

【讨论】:

  • 我连接的不是.,而是localhost。
猜你喜欢
  • 2012-08-02
  • 2012-07-24
  • 2016-07-19
  • 2017-04-18
  • 1970-01-01
  • 2019-03-30
  • 1970-01-01
  • 1970-01-01
  • 2016-03-18
相关资源
最近更新 更多