建議收藏備查!MySQL 常見(jiàn)錯(cuò)誤代碼說(shuō)明
先給大家看幾個(gè)實(shí)例的錯(cuò)誤分析與解決方案。
1.ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/data/mysql/mysql.sock'
- 問(wèn)題分析:可能是數(shù)據(jù)庫(kù)沒(méi)有啟動(dòng)或者是端口被防火墻禁止。
- 解決方法:?jiǎn)?dòng)數(shù)據(jù)庫(kù)或者防火墻開(kāi)放數(shù)據(jù)庫(kù)監(jiān)聽(tīng)端口。
2.ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
- 問(wèn)題分析:密碼不正確或者沒(méi)有權(quán)限訪問(wèn)。
- 解決方法:
1)修改 my.cnf 主配置文件,在[mysqld]下添加 skip-grant-tables,重啟數(shù)據(jù)庫(kù)。最后修改密碼命令如下:
- mysql> use mysql;
- mysql> update user set password=password("123456") where user="root";
再刪除剛剛添加的 skip-grant-tables 參數(shù),再重啟數(shù)據(jù)庫(kù),使用新密碼即可登錄。
2)重新授權(quán),命令如下:
- mysql> grant all on *.* to 'root'@'mysql-server' identified by '123456';
3.客戶端報(bào) Too many connections
問(wèn)題分析:連接數(shù)超出 Mysql 的最大連接限制。
解決方法:
- 在 my.cnf 配置文件里面增加連接數(shù),然后重啟 MySQL 服務(wù)。max_connections = 10000
- 臨時(shí)修改最大連接數(shù),重啟后不生效。需要在 my.cnf 里面修改配置文件,下次重啟生效。
- set GLOBAL max_connections=10000;
4.Warning: World-writable config file '/etc/my.cnf' is ignored ERROR! MySQL is running but PID file could not be found
- 問(wèn)題分析:MySQL 的配置文件/etc/my.cnf 權(quán)限不對(duì)。
- 解決方法:
- chmod 644 /et/my.cnf
5.InnoDB: Error: page 14178 log sequence number 29455369832 InnoDB: is in the future! Current system log sequence number 29455369832
- 問(wèn)題分析:innodb 數(shù)據(jù)文件損壞。
- 解決方法:修改 my.cnf 配置文件,在[mysqld]下添加 innodb_force_recovery=4, 啟動(dòng)數(shù)據(jù)庫(kù)后備份數(shù)據(jù)文件,然后去掉該參數(shù),利用備份文件恢復(fù)數(shù)據(jù)。
6.從庫(kù)的 Slave_IO_Running 為 NO
- 問(wèn)題分析:主庫(kù)和從庫(kù)的 server-id 值一樣.
- 解決方法:修改從庫(kù)的 server-id 的值,修改為和主庫(kù)不一樣,比主庫(kù)低。修改完后重啟,再同步即可!
7.從庫(kù)的 Slave_IO_Running 為 NO問(wèn)題
問(wèn)題分析:造成從庫(kù)線程為 NO 的原因會(huì)有很多,主要原因是主鍵沖突或者主庫(kù)刪除或更新數(shù)據(jù), 從庫(kù)找不到記錄,數(shù)據(jù)被修改導(dǎo)致。通常狀態(tài)碼報(bào)錯(cuò)有 1007、1032、1062、1452 等。
解決方法一:
- mysql> stop slave;
- mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
- mysql> start slave;
解決方法二:設(shè)置用戶權(quán)限,設(shè)置從庫(kù)只讀權(quán)限
- set global read_only=true;
8.Error initializing relay log position: I/O error reading the header from the binary log
- 分析問(wèn)題:從庫(kù)的中繼日志 relay-bin 損壞.
- 解決方法:手工修復(fù),重新找到同步的 binlog 和 pos 點(diǎn),然后重新同步即可。
- mysql> CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.xxx',MASTER_LOG_POS=xxx;
維護(hù)過(guò)MySQL的運(yùn)維或DBA都知道,經(jīng)常會(huì)遇到的一些錯(cuò)誤信息中有一些類(lèi)似10xx的代碼。
- Replicate_Wild_Ignore_Table:
- Last_Errno: 1032
- Last_Error: Could not execute Update_rows event on table xuanzhi.test; Can't find record in 'test', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.000004, end_log_pos 3704
但是,如果不深究或者之前遇到過(guò),還真不太清楚,這些代碼具體的含義是什么?這也給我們排錯(cuò)造成了一定的阻礙。
所以,今天民工哥就把主從同步過(guò)程中一些常見(jiàn)的錯(cuò)誤代碼,它的具體說(shuō)明給大家整理出來(lái)了。
MySQL常見(jiàn)錯(cuò)誤代碼說(shuō)明:
- 130 :文件格式不正確。
- 145 :文件無(wú)法打開(kāi)
- 1005:創(chuàng)建表失敗
- 1006:創(chuàng)建數(shù)據(jù)庫(kù)失敗
- 1007:數(shù)據(jù)庫(kù)已存在,創(chuàng)建數(shù)據(jù)庫(kù)失敗
- 1008:數(shù)據(jù)庫(kù)不存在,刪除數(shù)據(jù)庫(kù)失敗
- 1009:不能刪除數(shù)據(jù)庫(kù)文件導(dǎo)致刪除數(shù)據(jù)庫(kù)失敗
- 1010:不能刪除數(shù)據(jù)目錄導(dǎo)致刪除數(shù)據(jù)庫(kù)失敗
- 1011:刪除數(shù)據(jù)庫(kù)文件失敗
- 1012:不能讀取系統(tǒng)表中的記錄
- 1020:記錄已被其他用戶修改
- 1021:硬盤(pán)剩余空間不足,請(qǐng)加大硬盤(pán)可用空間
- 1022:關(guān)鍵字重復(fù),更改記錄失敗
- 1023:關(guān)閉時(shí)發(fā)生錯(cuò)誤
- 1024:讀文件錯(cuò)誤
- 1025:更改名字時(shí)發(fā)生錯(cuò)誤
- 1026:寫(xiě)文件錯(cuò)誤
- 1032:記錄不存在
- 1036:數(shù)據(jù)表是只讀的,不能對(duì)它進(jìn)行修改
- 1037:系統(tǒng)內(nèi)存不足,請(qǐng)重啟數(shù)據(jù)庫(kù)或重啟服務(wù)器
- 1038:用于排序的內(nèi)存不足,請(qǐng)?jiān)龃笈判蚓彌_區(qū)
- 1040:已到達(dá)數(shù)據(jù)庫(kù)的最大連接數(shù),請(qǐng)加大數(shù)據(jù)庫(kù)可用連接數(shù)
- 1041:系統(tǒng)內(nèi)存不足
- 1042:無(wú)效的主機(jī)名
- 1043:無(wú)效連接
- 1044:當(dāng)前用戶沒(méi)有訪問(wèn)數(shù)據(jù)庫(kù)的權(quán)限
- 1045:不能連接數(shù)據(jù)庫(kù),用戶名或密碼錯(cuò)誤
- 1048:字段不能為空
- 1049:數(shù)據(jù)庫(kù)不存在
- 1050:數(shù)據(jù)表已存在
- 1051:數(shù)據(jù)表不存在
- 1054:字段不存在
- 1065:無(wú)效的SQL語(yǔ)句,SQL語(yǔ)句為空
- 1081:不能建立Socket連接
- 1114:數(shù)據(jù)表已滿,不能容納任何記錄
- 1116:打開(kāi)的數(shù)據(jù)表太多
- 1129:數(shù)據(jù)庫(kù)出現(xiàn)異常,請(qǐng)重啟數(shù)據(jù)庫(kù)
- 1130:連接數(shù)據(jù)庫(kù)失敗,沒(méi)有連接數(shù)據(jù)庫(kù)的權(quán)限
- 1133:數(shù)據(jù)庫(kù)用戶不存在
- 1141:當(dāng)前用戶無(wú)權(quán)訪問(wèn)數(shù)據(jù)庫(kù)
- 1142:當(dāng)前用戶無(wú)權(quán)訪問(wèn)數(shù)據(jù)表
- 1143:當(dāng)前用戶無(wú)權(quán)訪問(wèn)數(shù)據(jù)表中的字段
- 1146:數(shù)據(jù)表不存在
- 1147:未定義用戶對(duì)數(shù)據(jù)表的訪問(wèn)權(quán)限
- 1149:SQL語(yǔ)句語(yǔ)法錯(cuò)誤
- 1158:網(wǎng)絡(luò)錯(cuò)誤,出現(xiàn)讀錯(cuò)誤,請(qǐng)檢查網(wǎng)絡(luò)連接狀況
- 1159:網(wǎng)絡(luò)錯(cuò)誤,讀超時(shí),請(qǐng)檢查網(wǎng)絡(luò)連接狀況
- 1160:網(wǎng)絡(luò)錯(cuò)誤,出現(xiàn)寫(xiě)錯(cuò)誤,請(qǐng)檢查網(wǎng)絡(luò)連接狀況
- 1161:網(wǎng)絡(luò)錯(cuò)誤,寫(xiě)超時(shí),請(qǐng)檢查網(wǎng)絡(luò)連接狀況
- 1062:字段值重復(fù),入庫(kù)失敗
- 1169:字段值重復(fù),更新記錄失敗
- 1177:打開(kāi)數(shù)據(jù)表失敗
- 1180:提交事務(wù)失敗
- 1181:回滾事務(wù)失敗
- 1203:當(dāng)前用戶和數(shù)據(jù)庫(kù)建立的連接已到達(dá)數(shù)據(jù)庫(kù)的最大連接數(shù),請(qǐng)?jiān)龃罂捎玫臄?shù)據(jù)庫(kù)連接數(shù)或重啟數(shù)據(jù)庫(kù)
- 1205:加鎖超時(shí)
- 1211:當(dāng)前用戶沒(méi)有創(chuàng)建用戶的權(quán)限
- 1216:外鍵約束檢查失敗,更新子表記錄失敗
- 1217:外鍵約束檢查失敗,刪除或修改主表記錄失敗
- 1226:當(dāng)前用戶使用的資源已超過(guò)所允許的資源,請(qǐng)重啟數(shù)據(jù)庫(kù)或重啟服務(wù)器
- 1227:權(quán)限不足,您無(wú)權(quán)進(jìn)行此操作
- 1235:MySQL版本過(guò)低,不具有本功能
- 1250:客戶端不支持服務(wù)器要求的認(rèn)證協(xié)議,請(qǐng)考慮升級(jí)客戶端。
- 1251:Client 不能支持 authentication protocol 的要求Client does not support authentication protocol requested by server; consider upgrading MySQL clientQuote:
- 1267:不合法的混合字符集。
- 2002:服務(wù)器端口不對(duì)。
- 2003:MySQL 服務(wù)沒(méi)有啟動(dòng),請(qǐng)啟動(dòng)該服務(wù)。
- 2008:MySQL client ran out of memory錯(cuò)誤指向了MySQL客戶mysql。這個(gè)錯(cuò)誤的原因很簡(jiǎn)單,客戶沒(méi)有足夠的內(nèi)存存儲(chǔ)全部結(jié)果。
- 2013:遠(yuǎn)程連接數(shù)據(jù)庫(kù)是有時(shí)會(huì)有這個(gè)問(wèn)題,MySQL 服務(wù)器在執(zhí)行一條 SQL 語(yǔ)句的時(shí)候失去了連接造成的。
- 10048:建議在my.ini文件中修改最大連接數(shù), 把 mysql_connect() 方法都改成了 mysql_pconnect() 方法. 要修改mysql_pconnect(),可以在論壇的data目錄的sql_config.php中 p c o n n e c t = 0 ; / / 是 否 持 久 連 接 修 改 成 pconnect = 0; //是否持久連接 修改成pconnect=0;//是否持久連接修改成pconnect = 1; 開(kāi)啟防刷新,嚴(yán)禁刷新太快.
- 10055:沒(méi)有緩存空間可利用,查看下你的C盤(pán)空間是否已經(jīng)滿,清除一些沒(méi)有用的文件. 可以在后臺(tái)的"論壇核心設(shè)置","核心功能設(shè)置"里"進(jìn)程優(yōu)化"開(kāi)啟,"GZIP 壓縮輸出"關(guān)閉.查找了一下10055(沒(méi)有緩存空間可利用)
- 10061: 啟動(dòng)這臺(tái)機(jī)器上的MySQL服務(wù) 如服務(wù)啟動(dòng)失敗,一定是你的my.ini文件出了差錯(cuò), MySQL服務(wù)不能正常啟動(dòng) 你刪除了它后,MySQL就會(huì)按其默認(rèn)配置運(yùn)行, 那就沒(méi)有問(wèn)題了