gpt4 book ai didi

php - 使用 php 连接到 mysql 时,仅在使用 localhost(而不是 127.0.0.1)时出现 mysql 2002 错误

转载 作者:行者123 更新时间:2023-11-29 04:28:32 26 4
gpt4 key购买 nike

我有以下 php 文件:

<?php
function show_error($stage) {
echo "<p>MySql error: " . mysql_error() . '</p>';
echo "<p>ErrorCode: " . mysql_errno() . '</p>';
die($stage);

}

$link = mysql_connect('localhost', 'blog', 'sql-password');
if (!$link) {
show_error('connect');
}
mysql_select_db('blog') or show_error();
$result = mysql_query('select col1 from test_table');
if (!$result) {
show_error('query');
}
$col = mysql_result($result, 0);
echo "<p>Result is: [" . $col . "]</p>";
mysql_close($link);
?>

当我运行它时,出现错误:

MySql error: No such file or directory

ErrorCode: 2002

connect

但是,如果我换行

$link = mysql_connect('localhost', 'blog', 'my-password'); 

$link = mysql_connect('127.0.0.1', 'blog', 'my-password'); 

一切正常。我该如何解决这个问题,以便它可以与 localhost127.0.0.1 一起使用,以及为什么使用 localhost127.0 的工作方式不同.0.1?

额外信息(一些谷歌回复表明这些很重要):

  • 127.0.0.1 localhost 出现在我的 /etc/hosts 文件中,并且 ping localhost 工作正常,并点击 127.0.0.1 地址。 /etc/hosts 文件中没有提及 localhost 的其他行。
  • 我在 Mac OSX Snow Leopard 中运行它。
  • 最后,命令stat/tmp/mysql.sock的结果是:

    234881044 28829652 srwxrwxrwx 1 _mysql wheel 0 0 “2011 年 7 月 10 日 18:29:37” “2011 年 7 月 10 日 18:29:37” “2011 年 7 月 10 日 18:29:37” “2011 年 7 月 10 日 18:29:09” "4096 0 0/tmp/mysql.sock

最佳答案

MySQL 客户端神奇地知道“localhost”表示本地机器,因此它尝试连接到 Unix 套接字而不是发出网络请求——这实际上更有效。这里的问题是您要么没有使用 Unix 套接字,要么——更有可能——MySQL 客户端库不知道在哪里可以找到 Unix 套接字文件。

我希望我能告诉你那个配置在哪里,但是 a) 我已经 3 年多没有积极使用过 MySQL,并且 b) 我从来没有在 OSX 上使用过 MySQL。

关于php - 使用 php 连接到 mysql 时,仅在使用 localhost(而不是 127.0.0.1)时出现 mysql 2002 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6641026/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com