首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 錯誤代碼完整對照表:快速診斷與排除指南

     編輯:MySQL 綜合教學

MySQL 常見錯誤代碼速查表

遭遇資料庫錯誤時,透過錯誤代碼快速定位原因是維運關鍵。以下整理最常見的 MySQL 錯誤代碼、原因與建議處置。

連線與權限類 (1040-1045, 1130, 1133, 1227)

代碼訊息常見原因建議處置
1040Too many connections達到 max_connections 上限調大參數、檢查連線洩漏、啟用連線池
1042Bad host主機名解析失敗檢查 DNS、/etc/hosts、skip-name-resolve
1043Invalid connection協定不符、SSL 問題確認 client/server 版本相容
1044Access denied for user無資料庫權限GRANT 權限、FLUSH PRIVILEGES
1045Access denied (password)帳號密碼錯誤重設密碼、確認 host 欄位匹配
1130Host not allowed to connectIP 未在 user 表允許清單新增 'user'@'%' 或具體 IP
1133User doesn't exist使用者不存在CREATE USER、確認 host 寫法
1227Access denied; need privilege執行操作缺乏 SUPER 等權限授予對應權限或由 DBA 執行

資料完整性類 (1022, 1048, 1062, 1169)

代碼訊息常見原因建議處置
1022Duplicate key唯一索引/主鍵衝突檢查業務邏輯、使用 INSERT IGNORE/ON DUPLICATE KEY
1048Column cannot be nullNOT NULL 欄位未給值修正 INSERT 語句、設定 DEFAULT
1062Duplicate entry同 1022,含具體值資訊同上
1169Duplicate value on updateUPDATE 導致唯一鍵衝突檢查 WHERE 條件、業務去重

資源與儲存類 (1021, 1037, 1038, 1114, 1116, 1205, 1226)

代碼訊息常見原因建議處置
1021Disk full磁碟空間不足清理空間、擴充磁碟、啟用壓縮
1037Out of memory系統記憶體耗盡重啟服務、調整 innodb_buffer_pool_size
1038Sort buffer full排序緩衝區不足增大 sort_buffer_size
1114Table is fullMEMORY 表滿 / 磁碟滿調整 max_heap_table_size、清理空間
1116Too many open tablestable_cache 過小增大 table_open_cache
1205Lock wait timeout交易鎖等待超時優化長交易、調整 innodb_lock_wait_timeout
1226User resource limit exceeded使用者連線/查詢/更新超限調整 user 資源限制、重啟服務

結構與語法類 (1005-1011, 1025, 1050, 1051, 1054, 1065, 1146, 1149, 1235)

代碼訊息常見原因建議處置
1005Can't create table外鍵定義錯誤、引擎不支援檢查 REFERENCES 語法、引擎相容性
1007/1008Database exists/not exists建立/刪除資料庫衝突使用 IF NOT EXISTS / IF EXISTS
1025Error on renameRENAME TABLE 失敗檢查權限、外鍵依賴、觸發器
1050Table already exists重複建表使用 CREATE TABLE IF NOT EXISTS
1051/1146Table doesn't exist查詢不存在的表確認拼寫、大小寫敏感度 (Linux)
1054Unknown column欄位名錯誤檢查拼寫、DESCRIBE 表結構
1065Empty querySQL 字串為空應用層驗證 SQL 非空
1149Syntax errorSQL 語法錯誤參考手冊、使用 EXPLAIN 驗證
1235Version too old功能需較新版本升級 MySQL、改用相容寫法

網路與複寫類 (1081, 1158-1161, 1180, 1181, 1216, 1217)

代碼訊息常見原因建議處置
1081Can't create socket埠被佔用、權限不足檢查 3306 埠、防火牆、SELinux
1158-1161Network read/write timeout/error網路不穩、MTU、防火牆檢查網路、增大 net_read/write_timeout
1180/1181Commit/Rollback failed交易日誌損壞、磁碟錯誤檢查錯誤日誌、備份還原
1216/1217Foreign key constraint fails子表/父表資料不一致先處理子表、暫停 FK 檢查

快速排查清單

  1. 查看 SHOW ENGINE INNODB STATUS 詳細錯誤
  2. 檢查錯誤日誌 /var/log/mysql/error.log
  3. 確認參數設定 SHOW VARIABLES
  4. 驗證權限 SHOW GRANTS FOR 'user'@'host'
  5. 測試網路連通 telnet host 3306

建議將此表儲存為團隊維運手冊附件,遇到錯誤時快速對照處理。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved