我是初学者,在尝试以大多数教程使用的方式连接到我的第一个真正的MySQL数据库时:
$connect = mysql_connect("localhost","user","pass")
我收到以下错误:
php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known
我搜索了互联网,但是当尝试使用fopen()或某些此类东西访问远程文件的内容时,人们似乎只遇到了这个问题。我发现他们的解决方案在这里不适用。我认为它与配置不当有关?
对于上下文,我正在运行OS X并从官方软件包安装程序安装MySQL。我使用的是OS X的PHP版本(5.3.6),但我很恼火,我从http://php-osx.liip.ch/安装了软件包。它没有帮助,但错误信息格式化得更好!
编辑:我确实有解决方案,但由于是新用户,我无法发布8小时。我会尽快发布。谢谢!答案 0 :(得分:2)
我找到了解决方案,但我不太清楚为什么会这样。希望它可以帮助某人:
首先我必须编辑php.ini来改变它寻找MySQL的sock文件(“/var/mysql/mysql.sock”)到OS X软件包安装程序实际放置的位置(“/ tmp / mysql”。袜子”)。这不起作用,但无论如何它可能是一件好事。
然后,我尝试直接连接到该sock文件,而不是通过“localhost”连接到MySQL。像:
$connect = mysql_connect(":tmp/mysql.sock","username","pass")
上面的例子暗示了“localhost”。有效!我不知道为什么,似乎每次我想连接时都不应该指定sock文件,但它确实有效。
更新:重新启动所有内容(Apache,mysqld,计算机本身)后,我不再需要指定sock文件。我可以使用“localhost”。我想这意味着问题只是php.ini中的那一行,但似乎这种错误信息应该更常见,如果是这种情况,因为很多OS X人都使用MySQL包安装程序。无论如何,希望这会有所帮助。
答案 1 :(得分:0)
仅使用下面的代码段并使用结果刷新您的帖子。你得到的错误看起来很奇怪,不应该只用mysql连接。
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>
答案 2 :(得分:0)
我也遇到了这个问题。我发现我在localhost上有一个尾部斜杠,大概是PHP解释为套接字地址。
$db = mysql_connect('localhost/', 'user', 'pass'); //bad
$db = mysql_connect('localhost', 'user', 'pass'); //good :)
答案 3 :(得分:0)
当我拼错了一个单词时,我遇到了同样的错误&#39; localhost&#39;这里:
$db = mysqli_connect('localhost','root',' ', 'mydb');