先給大家看幾個例項的錯誤分析與解決方案。
1.ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/data/mysql/mysql.sock'
-
問題分析:可能是資料庫沒有啟動或者是埠被防火牆禁止。
-
解決方法:啟動資料庫或者防火牆開放資料庫監聽埠。
2.ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
-
問題分析:密碼不正確或者沒有許可權訪問。
-
解決方法:
1)修改 my.cnf 主配置檔案,在[mysqld]下新增 skip-grant-tables,重啟資料庫。最後修改密碼命令如下:
mysql> use mysql;
mysql> update user set password=password("123456") where user="root";
再刪除剛剛新增的 skip-grant-tables 引數,再重啟資料庫,使用新密碼即可登入。
2)重新授權,命令如下:
mysql> grant all on *.* to 'root'@'mysql-server' identified by '123456';
3.客戶端報 Too many connections
-
問題分析:連線數超出 Mysql 的最大連線限制。
-
解決方法:
-
1、在 my.cnf 配置檔案裡面增加連線數,然後重啟 MySQL 服務。max_connections = 10000
-
2、臨時修改最大連線數,重啟後不生效。需要在 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 許可權不對。
-
解決方法:
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 資料檔案損壞。
-
解決方法:修改 my.cnf 配置檔案,在[mysqld]下新增 innodb_force_recovery=4, 啟動資料庫後備份資料檔案,然後去掉該引數,利用備份檔案恢復資料。
6.從庫的 Slave_IO_Running 為 NO
-
問題分析:主庫和從庫的 server-id 值一樣.
-
解決方法:修改從庫的 server-id 的值,修改為和主庫不一樣,比主庫低。修改完後重啟,再同步即可!
7.從庫的 Slave_IO_Running 為 NO問題
-
問題分析:造成從庫執行緒為 NO 的原因會有很多,主要原因是主鍵衝突或者主庫刪除或更新資料, 從庫找不到記錄,資料被修改導致。通常狀態碼報錯有 1007、1032、1062、1452 等。
-
解決方法一:
mysql> stop slave;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> start slave;
- 解決方法二:設定使用者許可權,設定從庫只讀許可權
set global read_only=true;
8.Error initializing relay log position: I/O error reading the header from the binary log
-
分析問題:從庫的中繼日誌 relay-bin 損壞.
-
解決方法:手工修復,重新找到同步的 binlog 和 pos 點,然後重新同步即可。
mysql> CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.xxx',MASTER_LOG_POS=xxx;
維護過MySQL的運維或DBA都知道,經常會遇到的一些錯誤資訊中有一些類似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:建立表失敗
-
1006:建立資料庫失敗
-
1007:資料庫已存在,建立資料庫失敗
-
1008:資料庫不存在,刪除資料庫失敗
-
1009:不能刪除資料庫檔案導致刪除資料庫失敗
-
1010:不能刪除資料目錄導致刪除資料庫失敗
-
1011:刪除資料庫檔案失敗
-
1012:不能讀取系統表中的記錄
-
1020:記錄已被其他使用者修改
-
1021:硬碟剩餘空間不足,請加大硬碟可用空間
-
1022:關鍵字重複,更改記錄失敗
-
1023:關閉時發生錯誤
-
1024:讀檔案錯誤
-
1025:更改名字時發生錯誤
-
1026:寫檔案錯誤
-
1032:記錄不存在
-
1036:資料表是隻讀的,不能對它進行修改
-
1037:系統記憶體不足,請重啟資料庫或重啟伺服器
-
1038:用於排序的記憶體不足,請增大排序緩衝區
-
1040:已到達資料庫的最大連線數,請加大資料庫可用連線數
-
1041:系統記憶體不足
-
1042:無效的主機名
-
1043:無效連線
-
1044:當前使用者沒有訪問資料庫的許可權
-
1045:不能連線資料庫,使用者名稱或密碼錯誤
-
1048:欄位不能為空
-
1049:資料庫不存在
-
1050:資料表已存在
-
1051:資料表不存在
-
1054:欄位不存在
-
1065:無效的SQL語句,SQL語句為空
-
1081:不能建立Socket連線
-
1114:資料表已滿,不能容納任何記錄
-
1116:開啟的資料表太多
-
1129:資料庫出現異常,請重啟資料庫
-
1130:連線資料庫失敗,沒有連線資料庫的許可權
-
1133:資料庫使用者不存在
-
1141:當前使用者無權訪問資料庫
-
1142:當前使用者無權訪問資料表
-
1143:當前使用者無權訪問資料表中的欄位
-
1146:資料表不存在
-
1147:未定義使用者對資料表的訪問許可權
-
1149:SQL語句語法錯誤
-
1158:網路錯誤,出現讀錯誤,請檢查網路連線狀況
-
1159:網路錯誤,讀超時,請檢查網路連線狀況
-
1160:網路錯誤,出現寫錯誤,請檢查網路連線狀況
-
1161:網路錯誤,寫超時,請檢查網路連線狀況
-
1062:欄位值重複,入庫失敗
-
1169:欄位值重複,更新記錄失敗
-
1177:開啟資料表失敗
-
1180:提交事務失敗
-
1181:回滾事務失敗
-
1203:當前使用者和資料庫建立的連線已到達資料庫的最大連線數,請增大可用的資料庫連線數或重啟資料庫
-
1205:加鎖超時
-
1211:當前使用者沒有建立使用者的許可權
-
1216:外來鍵約束檢查失敗,更新子表記錄失敗
-
1217:外來鍵約束檢查失敗,刪除或修改主表記錄失敗
-
1226:當前使用者使用的資源已超過所允許的資源,請重啟資料庫或重啟伺服器
-
1227:許可權不足,您無權進行此操作
-
1235:MySQL版本過低,不具有本功能
-
1250:客戶端不支援伺服器要求的認證協議,請考慮升級客戶端。
-
1251:Client 不能支援 authentication protocol 的要求Client does not support authentication protocol requested by server; consider upgrading MySQL clientQuote:
-
1267:不合法的混合字符集。
-
2002:伺服器埠不對。
-
2003:MySQL 服務沒有啟動,請啟動該服務。
-
2008:MySQL client ran out of memory錯誤指向了MySQL客戶mysql。這個錯誤的原因很簡單,客戶沒有足夠的記憶體儲存全部結果。
-
2013:遠端連線資料庫是有時會有這個問題,MySQL 伺服器在執行一條 SQL 語句的時候失去了連線造成的。
-
10048:建議在my.ini檔案中修改最大連線數, 把 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盤空間是否已經滿,清除一些沒有用的檔案. 可以在後臺的"論壇核心設定","核心功能設定"裡"程序最佳化"開啟,"GZIP 壓縮輸出"關閉.查詢了一下10055(沒有快取空間可利用)
-
10061: 啟動這臺機器上的MySQL服務 如服務啟動失敗,一定是你的my.ini檔案出了差錯, MySQL服務不能正常啟動 你刪除了它後,MySQL就會按其預設配置執行, 那就沒有問題了