2011-11-04 52 views
1

我是一名初學者,嘗試以這種方式連接到我的第一個真正的MySQL數據庫大多數教程使用:訪問來自PHP的MySQL(5.5.17)時出現「getaddrinfo失敗...」錯誤(5.3.6-8)

$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

可能是值得一提的是,[你已經有了一個答案(http://stackoverflow.com/posts/8010567 /修訂版),以免人們花費太多精力。 –

+0

你說得對,謝謝。你一直很有幫助。 – runamokisay

回答

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

我找到了一個解決方案,但我不知道它爲什麼起作用。但希望它可以幫助某人:

首先,我必須編輯php.ini以更改它在哪裏查找MySQL的sock文件(「/var/mysql/mysql.sock」)到OS X軟件包安裝程序實際放置到的位置( 「/tmp/mysql.sock」)。這不起作用,但無論如何它可能是一件好事。

然後,而不是通過「本地主機」連接到MySQL,我試圖直接連接到該襪子文件。像:

$connect = mysql_connect(":tmp/mysql.sock","username","pass") 

「localhost」在上面的例子中是隱含的。有效!我不知道爲什麼,似乎我不應該在每次連接時都指定sock文件,但它確實有效。

更新:重新啓動一切後(Apache,mysqld,電腦本身),我不再需要指定襪子文件。我只能使用「localhost」。我想這意味着問題只是在php.ini中的那一行,但似乎這個錯誤信息應該更常見,如果是這樣的話,因爲許多OS X人使用MySQL軟件包安裝程序。無論如何,希望這有助於。

0

我也遇到了這個問題。我發現我在本地主機上有一個尾隨斜槓,這可能被PHP解釋爲套接字地址。

$db = mysql_connect('localhost/', 'user', 'pass'); //bad 
$db = mysql_connect('localhost', 'user', 'pass'); //good :) 
0

我有同樣的錯誤,當我拼寫錯誤的單詞「localhost」的位置:

$db = mysqli_connect('localhost','root',' ', 'mydb'); 
相關問題