http://m.survivalescaperooms.com/mail近日武林網(wǎng)小編為了方便客戶在遇到一些常見MySQL數(shù)據(jù)庫問題無法解決,借此機(jī)會就總結(jié)一下MySQL數(shù)據(jù)庫常見三大問題的原因以及解決方案,如下:
第一,使用MySQL時的一些常見錯誤
1.MySQL server has gone away
常見的原因是服務(wù)器超時了并且關(guān)閉了連接。缺省地,如果沒有事情發(fā)生,服務(wù)器在 8個小時后關(guān)閉連接。你可在啟動mysqld時通過設(shè)置wait_timeout變量改變時間限制。
如果mysqld得到一個太大或不正常的包,它認(rèn)為客戶出錯了并關(guān)閉連接。
2.Can't connect to [local] MySQL server
通常意味著沒有一個MySQL服務(wù)器運(yùn)行在系統(tǒng)上或當(dāng)試圖連接mysqld服務(wù)器時,你正在使用一個錯誤的套接字文件或TCP/IP端口。
檢查(使用ps)服務(wù)器上是否有一個名為mysqld的進(jìn)程啟動
如果一個mysqld進(jìn)程正在運(yùn)行,可以通過嘗試這些不同的連接來檢查服務(wù)器
shell> mysqladmin version
shell> mysqladmin variables
shell> mysqladmin -h `hostname` version variables
shell> mysqladmin -h `hostname` --port=3306 version
shell> mysqladmin -h 'ip for your host' version
shell> mysqladmin --socket=/tmp/mysql.sock version
注意hostname命令使用反引號“`”而非正引號“'”;這些導(dǎo)致hostname輸出(即,當(dāng)前主機(jī)名)被代替進(jìn)mysqladmin命令中。
3.Host '...' is blocked錯誤
Host 'hostname' is blocked because of many connection errors.
Unblock with 'mysqladmin flush-hosts'
這意味著,mysqld已經(jīng)得到了大量(max_connect_errors)的主機(jī)'hostname'的在中途被中斷了的連接請求。在max_connect_errors次失敗請求后,mysqld認(rèn)定出錯了(象來字一個黑客的攻擊),并且阻止該站點(diǎn)進(jìn)一步的連接,直到某人執(zhí)行命令mysqladmin flush-hosts。
缺省地,mysqld在10個連接錯誤后阻塞一臺主機(jī)。你可以通過象這樣啟動服務(wù)器很容易地調(diào)整它:
shell> safe_mysqld -O max_connect_errors=10000 &
第二,Too many connections錯誤
意味著已經(jīng)有max_connections個客戶連接了mysqld服務(wù)器。
如果你需要比缺省(100)更多的連接,那么你應(yīng)該重啟mysqld,用更大的 max_connections 變量值。
1.Out of memory錯誤
mysql: Out of memory at line 42, 'malloc.c'
mysql: needed 8136 byte (8k), memory in use: 12481367 bytes (12189k)
ERROR 2008: MySQL client ran out of memory
注意,錯誤指向了MySQL客戶mysql。這個錯誤的原因很簡單,客戶沒有足夠的內(nèi)存存儲全部結(jié)果。
首先檢查你的查詢是否正確
2.Packet too large錯誤
一個MySQL客戶或mysqld服務(wù)器得到一個比max_allowed_packet個字節(jié)長的包
可以通過用mysql --set-variable=max_allowed_packet=8M指定一個更大的緩沖區(qū)來啟動客戶程序。
3.The table is full錯誤
這個錯誤發(fā)生在內(nèi)存臨時表變得比tmp_table_size字節(jié)大時。
Commands out of sync in client錯誤
正在以錯誤的次序調(diào)用客戶函數(shù)!
4.Ignoring user錯誤
Found wrong password for user: _user@some_host'">'some_user@some_host'; Ignoring user
這意味著在mysqld啟動時或在它再次裝載權(quán)限表時,它在user表中找到了一個有一個無效口令的條目。結(jié)果,條目簡單地被權(quán)限系統(tǒng)忽略。
5.Table 'xxx' doesn't exist錯誤
數(shù)據(jù)庫和表名件是區(qū)分大小寫的!可以用SHOW TABLES檢查你在當(dāng)前數(shù)據(jù)庫中有哪個表。
第三,MySQL總是崩潰
首先你應(yīng)該試著找出問題mysqld守護(hù)進(jìn)程是否死掉或你的問題是否與你的客戶有關(guān)。你可以用mysqladmin version檢查你的mysqld服務(wù)器正常執(zhí)行了多長時間,如果mysqld死了,你可以在文件“mysql-data-directory/'hostname'.err”中找到其原因。
其他,MySQL數(shù)據(jù)庫常見問題的原因以及解決方案可能還有些不完整,還是希望對廣大客戶或者朋友有些作用,同時也歡迎大家來武林網(wǎng)有問必答補(bǔ)充。