2011-12-13 226 views
2

當我嘗試連接到我的數據庫,我得到這個錯誤:失去連接,系統錯誤:111

Lost connection to MySQL server at 'reading initial communication packet', system error:111 

這是我的PHP代碼(這只是一個測試):

<?php 
@session_start(); 
include(".conf.php"); 
print_r($conf); 
$con = mysql_connect($conf['db_hostname'], $conf['db_username'], $conf['db_password']) or die (mysql_error()); 
mysql_select_db("aTableName", $con); 
$prof = '000'; 
//$prof = $_GET['profile']; 
$prof = addslashes(htmlentities($prof)); 
$result = "SELECT * FROM aTableName WHERE id = '$prof'"; 
$q = mysql_query($result, $con); 
$qarr = mysql_fetch_array($q); 
print_r($qarr); 
?> 

任何幫助將不勝感激。我無法弄清楚,這真的讓我感到困擾。謝謝!

編輯:我主辦的GoDaddy,託管和數據庫。

回答

11

您的主機錯了,您的端口錯了,防火牆阻止了連接,或者SQL服務器沒有運行。 111是「連接被拒絕」。您可以通過嘗試telnet到SQL服務器的主機和端口進行故障排除。如果這有效,你的代碼會得到主機或端口錯誤。

如果這不起作用,請檢查SQL服務器本身。如果它在那裏工作,問題是網絡。如果它在那裏不起作用,那麼SQL服務器沒有運行。

+0

服務器的作品,因爲我可以把它連接使用phpMyAdmin來。我使用的是Mac,所以我很確定我無法telnet。 – 2011-12-13 20:32:52

+0

「服務器」,我的意思是SQL服務器(而不是Web服務器)。我的意思是你應該嘗試從服務器機器本身telnet到SQL服務器的主機和SQL端口。 (無論他們是否是同一臺物理機,測試過程都是一樣的。) – 2011-12-13 20:34:46

3

檢查my.cnf文件。它可能允許本地主機連接,但您的conf.php肯定會嘗試連接到您的IP或127.0.0.1。嘗試使用本地主機,如果它工作並且希望它以不同的方式運行,請在bind-address指令中編輯my.cnf文件(將其更改爲IP或127.0.0.1,或者對該行進行註釋)沒有執行綁定)。

無論如何,當您連接與到mysql「本地主機」,它使用套接字而不是TCP康恩的,因此它可能失敗,並,

1

我有同樣的錯誤。我試圖從客戶端機器192.168.0.47訪問服務器192.168.0.4上的mysql數據庫。當我進入/etc/mysql/my.cnf時,更改了bind-address = 192.168.0.4(並註釋掉了127.0.0.1),並重新啓動機器,錯誤信息消失了。

0

在我的情況下,我有datadir =/media/sdc1/mysql,並且磁盤沒有安裝。 我重新安裝並重新啓動mysql

0

在我的情況下磁盤已滿。你必須刪除任何不必要的文件。

如果你刪除了,那麼你必須重新啓動mysqld。

例如:sudo service mysqld restart

相關問題