建議收藏備查!MySQL 常見錯誤程式碼說明

民工哥發表於2020-10-12

先給大家看幾個例項的錯誤分析與解決方案。

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!差點背鍋走人...

超讚!牆裂推薦一個 MySQL 自動化運維工具!

記住!永遠不要在 MySQL 中使用 UTF-8

為什麼不建議把資料庫部署在Docker容器內?

贊!7000 字學習筆記,MySQL 從入門到放棄

官方工具|MySQL Router 高可用原理與實戰

以上就是今天給大家整理的常見錯誤程式碼說明,希望對大家的日常工作或學習有所幫助與借鑑,大家可以點個贊與轉發分享支援一波,你的支援就是民工哥最大的寫作動力。

image

相關文章