share/errmsg.txt,映射至 mysqld_error.h、sql_state.hinclude/errmsg.h、libmysql/errmsg.cCtrl+F 搜索錯誤號 (如 1062) 或 SQLSTATE (如 23000)%d、%s 為運行時動態替換的數值/字符串| 錯誤碼 | SQLSTATE | 常見原因 | 對策 |
|---|---|---|---|
| 1045 | 28000 | ER_ACCESS_DENIED_ERROR | 用戶/密碼/主機不匹配 → 檢查 user 表、flush privileges |
| 1049 | 42000 | ER_BAD_DB_ERROR | 庫不存在 → 建庫或檢查拼寫 |
| 1050 | 42S01 | ER_TABLE_EXISTS_ERROR | 建表名衝突 → DROP IF EXISTS 或換名 |
| 1054 | 42S22 | ER_BAD_FIELD_ERROR | 列名錯誤 → 檢查拼寫、大小寫、反引號 |
| 1062 | 23000 | ER_DUP_ENTRY | 唯一鍵衝突 → 捕獲異常、INSERT IGNORE、ON DUPLICATE KEY UPDATE |
| 1064 | 42000 | ER_PARSE_ERROR | SQL 語法錯誤 → 對照版本手冊、檢查保留字 |
| 1146 | 42S02 | ER_NO_SUCH_TABLE | 表不存在 → 檢查庫上下文、表名大小寫 (lower_case_table_names) |
| 1153 | 08S01 | ER_NET_PACKET_TOO_LARGE | 封包超限 → 加大 max_allowed_packet |
| 1205 | HY000 | ER_LOCK_WAIT_TIMEOUT | 鎖等待超時 → 縮短事務、優化索引、調大 innodb_lock_wait_timeout |
| 1213 | 40001 | ER_LOCK_DEADLOCK | 死鎖 → 統一加鎖順序、縮短事務、重試邏輯 |
| 1264 | 22003 | ER_WARN_DATA_OUT_OF_RANGE | 數值溢出 → 檢查類型範圍、應用層驗證 |
| 1364 | HY000 | ER_NO_DEFAULT_FOR_FIELD | 非空無默認值插入 → 給默認值或顯式賦值 |
| 1366 | HY000 | ER_TRUNCATED_WRONG_VALUE_FOR_FIELD | 類型轉換失敗 → 檢查輸入格式、字符集 |
| 1452 | 23000 | ER_NO_REFERENCED_ROW_2 | 外鍵父行缺失 → 先插父表、檢查關聯數據 |
| 2002 | 08S01 | CR_CONNECTION_ERROR | 本地 socket 連不上 → 檢查服務、socket 路徑、權限 |
| 2003 | 08S01 | CR_CONN_HOST_ERROR | 遠程連不上 → 防火牆、bind-address、skip-name-resolve |
| 2006 | 08S01 | CR_SERVER_GONE_ERROR | 服務端斷開 → 超時、OOM、大封包、崩潰 → 查 error log |
| 2013 | 08S01 | CR_SERVER_LOST | 查詢中斷連接 → 同 2006 |
| 2024 | 08S01 | CR_PROBE_SLAVE_CONNECT | 從庫連主失敗 → CHANGE MASTER TO 參數、網絡、權限 |
本文包含 服務端 1000-1494 (約 500 條) 與 客戶端 2000-2054 (約 55 條) 完整定義。因篇幅極長,建議:
perror 命令行工具:perror 1062 → Error code 1062: Duplicate entry註:MySQL 8.0 新增錯誤碼 (3000+ 系列) 不在本表範圍內,請參考官方手冊 Server Error Codes and Messages。