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

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章