先給大家看幾個例項的錯誤分析與解決方案。
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就會按其預設配置執行, 那就沒有問題了
給大家推薦幾篇MySQL的文章,值得學習!!!
一入職,就遇到 MySQL 這麼大 Bug!差點背鍋走人...
以上就是今天給大家整理的常見錯誤程式碼說明,希望對大家的日常工作或學習有所幫助與借鑑,大家可以點個贊與轉發分享支援一波,你的支援就是民工哥最大的寫作動力。