到MySQL時,我有以下PHP文件:只獲得一個MySQL錯誤2002使用本地主機時(而不是127.0.0.1)連接使用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');
它一切正常。我該如何解決這個問題,以便它可以與localhost
或127.0.0.1
一起使用,以及爲什麼使用localhost
與127.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輪0 0 「07月10 18點29分37秒2011」, 「07月10 18點29分37秒2011」,「18年7月10日:29:37 2011" , 「07月10 18點29分09秒2011」 4096 0 0 /tmp/mysql.sock
謝謝,這是我需要的線索!因爲它一定是一個沒有找到sql套接字的php問題,所以我在php.ini中搜索了「套接字」,並找到了錯誤值「mysql.default_socket」的選項。將其更改爲「/tmp/mysql.sock」解決了該問題。 –
或者你可以在php.ini中註釋掉硬編碼的mysql.sock值,然後使用正確的默認值 – Magnus