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

MySQL 錯誤代碼速查手冊:新手入門必備對照表

     編輯:MySQL 綜合教學

MySQL 常見錯誤代碼分類速查 (新手版)

遭遇錯誤代碼時,快速定位類別與常見原因是解決問題的第一步。本文將高頻錯誤碼分為六大類,提供一頁式對照表供開發與維運參考。

連線與權限錯誤 (最高頻)

代碼簡述典型場景快速修正
1040Too many connections連線池洩漏、max_connections 過小檢查應用關閉連線、調大參數
1042Bad hostDNS 解析失敗、skip-name-resolve用 IP 直連、修 /etc/hosts
1043Invalid connection協定不符、SSL 驗證失敗確認驅動版本、useSSL=false
1044Access denied for user無庫/表權限GRANT SELECT ON db.* TO user@host
1045Access denied (password)密碼錯誤、host 不匹配重設密碼、檢查 user 表 host 欄
1130Host not allowedIP 不在允許清單CREATE USER 'u'@'%' IDENTIFIED BY 'p'
1133User doesn't exist用戶名拼錯、host 不對SELECT User, Host FROM mysql.user
1227Need SUPER privilege執行管理指令缺權限DBA 執行或授予對應權限

資料完整性錯誤

代碼簡述典型場景快速修正
1022Duplicate key主鍵/唯一索引衝突INSERT IGNORE、ON DUPLICATE KEY UPDATE
1048Column cannot be nullNOT NULL 欄位未給值補 DEFAULT、應用層驗證
1062Duplicate entry同 1022,含具體值業務去重、唯一索引設計
1169Duplicate on updateUPDATE 導致唯一鍵衝突檢查 WHERE 條件
1216FK check fail (child)子表插入父表不存在的值先插父表、或暫停 FK 檢查
1217FK check fail (parent)刪除父表時子表仍有引用先刪子表、或 CASCADE

資源與儲存錯誤

代碼簡述典型場景快速修正
1021Disk full磁碟空間耗盡清理日誌、擴充磁碟、壓縮表
1037Out of memory記憶體不足調整 buffer_pool、檢查記憶體洩漏
1038Sort buffer full大排序記憶體不足sort_buffer_size 調大
1114Table is fullMEMORY 表滿、磁碟滿max_heap_table_size 調大
1116Too many open tablestable_open_cache 過小調大 table_open_cache
1205Lock wait timeout交易鎖等待超過 50 秒優化長交易、innodb_lock_wait_timeout
1226User resource exceeded用戶連線/查詢/更新超限調整 user 資源限制

結構與語法錯誤

代碼簡述典型場景快速修正
1005Can't create table外鍵定義錯、引擎不支援檢查 REFERENCES、引擎相容
1007Database exists重複建庫CREATE DATABASE IF NOT EXISTS
1008Database not exists刪除/使用不存在的庫DROP DATABASE IF EXISTS
1025Error on renameRENAME 失敗 (FK、觸發器)先移除依賴物件
1050Table exists重複建表CREATE TABLE IF NOT EXISTS
1051Table not exists查詢不存在的表確認拼寫、大小寫敏感
1054Unknown column欄位名錯誤DESCRIBE table 核對
1065Empty querySQL 字串為空應用層驗證非空
1146Table doesn't exist同 1051同上
1149Syntax errorSQL 語法錯誤參考手冊、EXPLAIN 驗證
1235Version too old功能需新版本 (CTE、窗口函數等)升級 MySQL、改用相容寫法

網路與複寫錯誤

代碼簡述典型場景快速修正
1081Can't create socket埠佔用、權限、SELinuxnetstat -tlnp | grep 3306
1158-1161Network read/write error/timeout網路抖動、防火牆、MTU檢查網路、調大 timeout 參數
1180Commit failedBinlog/Redo log 寫入失敗檢查磁碟、錯誤日誌
1181Rollback failedUndo log 損壞重啟恢復、或從備份還原

新手排查三步驟

  1. 看代碼: 對照上表定位類別
  2. 看日誌: tail -f /var/log/mysql/error.log
  3. 看狀態: SHOW ENGINE INNODB STATUS、SHOW PROCESSLIST

錯誤代碼是資料庫的「體溫計」。熟悉高頻代碼含義,能將排查時間從小時縮減至分鐘。建議列印此表貼在工位旁。

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