MySQL 伺服器回傳的數字錯誤代碼 (Error Code) 共 100+ 種。本文彙整常見代碼、字面意義、典型觸發場景與排查方向,供開發與運維快速定位問題。
| 代碼 | 訊息摘要 | 典型原因 | 排查方向 |
|---|---|---|---|
| 1005 | Can't create table | 外鍵定義錯誤、引擎不支援 | 檢查 FK 參考欄位型別一致、引擎為 InnoDB |
| 1006 | Can't create database | 權限不足、磁碟滿、路徑錯誤 | 檢查 datadir 權限、磁碟空間 |
| 1007 | Database exists | 重複 CREATE DATABASE | 先 DROP 或改用 IF NOT EXISTS |
| 1008 | Database doesn't exist | DROP/USE 不存在的庫 | 確認拼字、大小寫 (Linux 區分) |
| 1010 | Can't drop database | 目錄非空、權限不足 | 手動清理 datadir 下殘留檔案 |
| 1016 | Can't open file | .frm/.ibd 檔案遺失/損壞 | 從備份還原、或 DROP TABLE 重建 |
| 1022 | Duplicate key | 唯一鍵/主鍵衝突 | 檢查 INSERT 值、或用 INSERT IGNORE/ON DUPLICATE KEY |
| 1032 | Record not found | DELETE/UPDATE 無匹配列 | 確認 WHERE 條件、資料是否已刪 |
| 1036 | Table is read only | MyISAM 表損壞、磁碟滿、唯讀屬性 | REPAIR TABLE、清理磁碟、檢查檔案屬性 |
| 1040 | Too many connections | 連線數達 max_connections | 調大 max_connections、檢查連線洩漏、啟用連線池 |
| 1044 | Access denied | 帳號無該庫權限 | GRANT 授權、FLUSH PRIVILEGES |
| 1045 | Access denied (user/pwd) | 帳號密碼錯誤、Host 不匹配 | 確認密碼、SELECT User,Host FROM mysql.user |
| 1048 | Column cannot be null | NOT NULL 欄位未給值 | 修正 INSERT/UPDATE 語句、或 ALTER 允許 NULL |
| 1049 | Unknown database | 資料庫不存在 | 建立資料庫或修正連線字串 |
| 1050 | Table already exists | 重複 CREATE TABLE | 先 DROP 或 CREATE IF NOT EXISTS |
| 1051 | Unknown table | 表不存在 | 確認拼字、schema、大小寫 |
| 1054 | Unknown column | 欄位不存在 | 檢查 ALTER TABLE 是否執行成功 |
| 1062 | Duplicate entry | 唯一鍵值重複 | 同 1022,檢查業務邏輯去重 |
| 1064 | Syntax error | SQL 語法錯誤 | 對照保留字、引號、逗號、MySQL 版本差異 |
| 1081 | Can't create socket | Unix socket 檔案衝突/權限 | 檢查 socket 參數、重啟服務 |
| 1114 | Table is full | MyISAM 達 4GB/磁碟滿/InnoDB 表空間滿 | 轉 InnoDB、擴充磁碟、innodb_data_file_path autoextend |
| 1130 | Host not allowed | 遠端連線無權限 | GRANT ... TO 'user'@'%'、檢查 bind-address |
| 1146 | Table doesn't exist | 同 1051 | 同上 |
| 1158-1161 | Network read/write error/timeout | 網路不穩、防火牆、MTU、長查詢超時 | 檢查網路、調大 net_read_timeout/net_write_timeout |
| 1169 | Duplicate entry (UPDATE) | 更新導致唯一鍵衝突 | 同 1062 |
| 1177 | Can't open table | 表鎖定、快取衝突 | FLUSH TABLES、重啟服務 |
| 1180/1181 | Commit/Rollback failed | 事務衝突、死鎖、記錄檔滿 | 檢查 SHOW ENGINE INNODB STATUS |
| 1203 | User max connections | 單用戶連線達上限 | 調大 max_user_connections |
| 1205 | Lock wait timeout | 行鎖等待超過 innodb_lock_wait_timeout | 優化長交易、索引、降低隔離級別 |
| 1213 | Deadlock | 循環等待鎖 | 統一存取順序、縮短交易、重試邏輯 |
| 1216 | FK constraint fails (child) | 子表插入無對應父表記錄 | 先插入父表、或暫時關閉 FK 檢查 |
| 1217 | FK constraint fails (parent) | 刪除父表仍有子表引用 | 先刪子表、或 ON DELETE CASCADE |
| 1226 | User resource exceeded | 單用戶資源超限 (queries/updates/connections/hr) | 調大 max_questions 等、優化慢查詢 |
| 1227 | Access denied (super privilege) | 需 SUPER 權限操作 | 以 root 執行或授予 SUPER |
| 1235 | MySQL version too old | 功能需較新版本 | 升級 MySQL 或改用相容寫法 |
Error Code + SQLSTATE + 完整 SQL 片段。perror 1062 (命令列工具) 可顯示代碼說明。