Can't connect to MySQL server是不能連接本地?cái)?shù)據(jù)庫服務(wù)器MYSQL數(shù)據(jù)庫服務(wù)器出錯(cuò)。
成都創(chuàng)新互聯(lián)公司從2013年成立,先為吉木乃等服務(wù)建站,吉木乃等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為吉木乃企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
寬帶連接在網(wǎng)上鄰居右鍵屬性里可以找到
檢查服務(wù)器端MySQL服務(wù)是否已經(jīng)啟動(dòng)。
檢查系統(tǒng)配置文件config.inc.php內(nèi)提供的MySQL連接帳號(hào)是否正確。
如果此問題頻繁間斷出現(xiàn),嘗試修改config.inc.php內(nèi)pconnect參數(shù)為1,開啟MySQL長(zhǎng)連接。
資料拓展
電腦無法連接的幾個(gè)問題
一、網(wǎng)絡(luò)設(shè)置的問題
二、DNS服務(wù)器的問題
三、IE瀏覽器本身的問題
四、網(wǎng)絡(luò)防火墻的問題
五、網(wǎng)絡(luò)協(xié)議和網(wǎng)卡驅(qū)動(dòng)的問題
六、HOSTS文件的問題
七、系統(tǒng)文件的問題
長(zhǎng)連接就可以避免每次請(qǐng)求都創(chuàng)建連接的開銷,節(jié)省了時(shí)間和IO消耗。
長(zhǎng)連接是提高了性能。不過還有一些細(xì)節(jié)的問題需要解決,即mysql發(fā)現(xiàn)一個(gè)鏈接長(zhǎng)時(shí)間沒有執(zhí)行查詢請(qǐng)求,就會(huì)自動(dòng)斷掉這個(gè)連接。
可以這樣封裝個(gè)函數(shù)
function login($a=false)
{
if(!$a)
{
$db=mysql_pconnect('localhost','user','pass');
}else
{
$db=mysql_connect('localhost','user','pass');
}
}
可以調(diào)用login()默認(rèn)參數(shù)為false 修改傳遞的參數(shù)就行了
概念解釋:
長(zhǎng)連接:長(zhǎng)連接是相對(duì)于短連接來說的。長(zhǎng)連接指在一個(gè)連接上可以連續(xù)發(fā)送多個(gè)數(shù)據(jù)包,在連接保持期間,如果沒有數(shù)據(jù)包發(fā)送,需要雙方發(fā)鏈路檢測(cè)包。mysql的長(zhǎng)連接如果長(zhǎng)期閑置,mysql會(huì)8小時(shí)后(默認(rèn)時(shí)間)主動(dòng)斷開該連接。
短連接:是指通訊雙方有數(shù)據(jù)交互時(shí),就建立一個(gè)連接,數(shù)據(jù)發(fā)送完成后,則斷開此連接,即每次連接只完成一項(xiàng)業(yè)務(wù)的發(fā)送。
連接的區(qū)別:
使用長(zhǎng)連接,短連接各有優(yōu)勢(shì),也各有缺點(diǎn)。我們看看長(zhǎng)短連接,系統(tǒng)是怎么做的?
1、短連接:
客戶端連接--創(chuàng)建socket認(rèn)證連接--維護(hù)連接--數(shù)據(jù)傳輸--關(guān)閉連接
2、長(zhǎng)連接
客戶端連接--創(chuàng)建socket認(rèn)證連接--維護(hù)連接--數(shù)據(jù)傳輸--維護(hù)連接--數(shù)據(jù)傳輸.....-關(guān)閉連接
2種連接方式都需要系統(tǒng)開銷來維護(hù)連接,哪種連接最合適并沒有準(zhǔn)確的說法,主要還是看你客戶端的行為。
conn本來 就已經(jīng)被你定義成了 函數(shù), conn.ping()當(dāng)然不存在了。而且你要的數(shù)據(jù)庫連接c,還被手動(dòng)關(guān)閉了。我覺得有兩點(diǎn)
1. 按照你這個(gè)腳本的情況,你用一次,就新建一個(gè)數(shù)據(jù)庫連接問題應(yīng)該不大。
2. 要保持使用一個(gè)連接的話。把c作全局變量 c=MySQLdb.connect(user="root",passwd="12345",host="localhost",db="yingtest")
使用的時(shí)候,直接用c但是不要close,當(dāng)然要先判斷這個(gè)連接是否已經(jīng)斷開了,如是再重新連一次。
或者把連接放到一個(gè)連接池里面,用的時(shí)候直接去連接池里面取。連接池可以看看 DBUtils模塊
你說的conn.ping() 看看是不是在c里面,c=MySQLdb.connect(user="root",passwd="12345",host="localhost",db="yingtest")就是這個(gè)對(duì)象里面,看看有沒有判斷連接是否斷開的方法。 因?yàn)闆]用過 MySQLdb模塊。
一直連接屬于長(zhǎng)連接,網(wǎng)站加入并發(fā)請(qǐng)求數(shù)會(huì)很多,如果是一個(gè)長(zhǎng)連接的話,你的網(wǎng)站加入并發(fā)請(qǐng)求數(shù)很多,也就是說同時(shí)有很多人來訪問你的網(wǎng)站,并且每個(gè)訪問者都需要查詢一次mysql數(shù)據(jù)庫的話,會(huì)很快把你的系統(tǒng)資源消耗完了。
每次連接都屬于短鏈接,短鏈接就沒有這個(gè)問題,每次查詢完就馬上關(guān)閉了,這樣不容易消耗過多的系統(tǒng)資源。但是長(zhǎng)連接也有個(gè)好處就是,頻繁查詢的時(shí)候,可以節(jié)省了多次建立TCP連接的時(shí)間