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