MySQL 錯誤代碼為四位數,前綴通常為 1xxx。以下彙整 100+ 高頻錯誤代碼、中文說明、常見觸發場景與快速排查方向。
| 代碼 | 常數名 | 中文說明 | 典型原因/對策 |
|---|---|---|---|
| 1005 | ER_CANT_CREATE_TABLE | 建立表失敗 | 權限不足、磁碟滿、外鍵引用表不存在 |
| 1006 | ER_CANT_CREATE_DB | 建立資料庫失敗 | 權限、路徑、磁碟空間 |
| 1007 | ER_DB_CREATE_EXISTS | 資料庫已存在 | CREATE DATABASE IF NOT EXISTS |
| 1008 | ER_DB_DROP_EXISTS | 資料庫不存在 | 拼寫錯誤、已被刪除 |
| 1009 | ER_DB_DROP_DELETE | 無法刪除資料庫檔案 | 檔案被鎖定、權限、檔案系統錯誤 |
| 1010 | ER_DB_DROP_RMDIR | 無法刪除資料目錄 | 目錄非空、權限 |
| 1011 | ER_DB_DROP_RMDIR2 | 刪除資料庫檔案失敗 | 同 1009 |
| 1012 | ER_CANT_READ_SYSTEM_TABLE | 無法讀取系統表記錄 | 權限、表損壞、升級未跑 mysql_upgrade |
| 1020 | ER_RECORD_CHANGED | 記錄已被其他用戶修改 | 並發更新衝突,重試或樂觀鎖 |
| 1021 | ER_DISK_FULL | 磁碟空間不足 | 清理日誌、擴容、檢查 tmpdir |
| 1022 | ER_DUP_KEY | 鍵值重複 | 唯一索引/主鍵衝突,INSERT IGNORE 或 ON DUPLICATE KEY UPDATE |
| 1023 | ER_ERROR_ON_CLOSE | 關閉時發生錯誤 | 檔案句柄洩漏、磁碟錯誤 |
| 1024 | ER_ERROR_ON_READ | 讀檔案錯誤 | 磁碟壞軌、檔案損壞、權限 |
| 1025 | ER_ERROR_ON_RENAME | 重命名錯誤 | 外鍵約束、檔案鎖定、跨檔案系統 |
| 1026 | ER_ERROR_ON_WRITE | 寫檔案錯誤 | 磁碟滿、權限、檔案系統唯讀 |
| 1032 | ER_KEY_NOT_FOUND | 記錄不存在 | DELETE/UPDATE 影響 0 行,檢查 WHERE 條件 |
| 1036 | ER_READ_ONLY | 表為唯讀 | FLUSH TABLES WITH READ LOCK、唯讀從庫、檔案系統唯讀 |
| 1037 | ER_OUT_OF_MEMORY | 記憶體不足 | 重啟服務、調大 innodb_buffer_pool_size、檢查記憶體洩漏 |
| 1038 | ER_OUT_OF_SORTMEMORY | 排序記憶體不足 | 增大 sort_buffer_size、優化 ORDER BY |
| 1040 | ER_CON_COUNT_ERROR | 連線數達上限 | 增大 max_connections、排查連線洩漏、連線池配置 |
| 1041 | ER_OUT_OF_MEMORY | 系統記憶體不足 | 同 1037,作業系統層面 OOM |
| 1042 | ER_BAD_HOST_ERROR | 無效主機名 | DNS 解析失敗、/etc/hosts、跳板機網路 |
| 1043 | ER_HANDSHAKE_ERROR | 握手失敗/無效連線 | 版本不協商、SSL/TLS 不匹配、防火牆截斷 |
| 1044 | ER_DBACCESS_DENIED_ERROR | 無資料庫存取權限 | GRANT 權限、FLUSH PRIVILEGES |
| 1045 | ER_ACCESS_DENIED_ERROR | 帳號/密碼錯誤 | 密碼錯誤、認證插件不匹配、主機名不允許 |
| 1048 | ER_BAD_NULL_ERROR | 欄位不能為 NULL | 表定義 NOT NULL 但傳入 NULL |
| 1049 | ER_BAD_DB_ERROR | 資料庫不存在 | 拼寫、大小寫敏感 (Linux)、未建立 |
| 1050 | ER_TABLE_EXISTS_ERROR | 表已存在 | CREATE TABLE IF NOT EXISTS |
| 1051 | ER_BAD_TABLE_ERROR | 表不存在 | 拼寫、大小寫、表已被刪除 |
| 1054 | ER_BAD_FIELD_ERROR | 欄位不存在 | 拼寫、ALTER TABLE 未同步、視圖定義過期 |
| 1065 | ER_EMPTY_QUERY | 空 SQL 語句 | 應用層拼接 SQL 產生空字串 |
| 1081 | ER_CANT_CREATE_SOCKET | 無法建立 Socket | 權限、目錄不存在、SELinux、tmpdir 滿 |
| 1114 | ER_TABLE_FULL | 表已滿 | MyISAM 達 4GB/2GB 限制、磁碟滿、InnoDB 表空間滿 |
| 1146 | ER_NO_SUCH_TABLE | 表不存在 | 同 1051 |
| 1147 | ER_WRONG_COLUMN_NAME | 欄位名錯誤 | 同 1054 |
| 1153 | ER_NET_PACKET_TOO_LARGE | 封包過大 | 增大 max_allowed_packet、分批次傳輸 |
| 1175 | ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE | 安全模式下無鍵更新 | 關閉 sql_safe_updates、加 WHERE 主鍵條件 |
| 1191 | ER_CANT_FIND_DL_ENTRY | 找不到動態庫入口 | UDF/插件版本不匹配、路徑錯誤 |
| 1205 | ER_LOCK_WAIT_TIMEOUT | 鎖等待超時 | 長事務、死鎖、索引缺失導致全表掃描鎖 |
| 1213 | ER_LOCK_DEADLOCK | 死鎖 | SHOW ENGINE INNODB STATUS 分析、統一加鎖順序 |
| 1216 | ER_NO_REFERENCED_ROW | 外鍵引用行不存在 | 父表記錄缺失、先插父後插子 |
| 1217 | ER_ROW_IS_REFERENCED | 行被引用無法刪除 | 先刪子表、或 ON DELETE CASCADE |
| 1264 | ER_DATA_TOO_LONG | 資料過長 | 欄位長度不足、字元集編碼導致位元組數超標 |
| 1364 | ER_NO_DEFAULT_FOR_FIELD | 欄位無預設值 | 嚴格模式下非 NULL 無預設欄位必須顯式賦值 |
| 1449 | ER_VIEW_OTHER_USER | 視圖定義者不存在 | 定義者帳號被刪、DEFINER 變更 |
| 1451 | ER_ROW_IS_REFERENCED_2 | 外鍵約束刪除失敗 | 同 1217 |
| 1452 | ER_NO_REFERENCED_ROW_2 | 外鍵約束插入失敗 | 同 1216 |
| 2002 | CR_CONNECTION_ERROR | 無法連線 Socket/TCP | 服務未啟動、socket 路徑錯誤、防火牆、bind-address |
| 2003 | CR_CONN_HOST_ERROR | 無法連線主機 | 網路不通、端口錯誤、防火牆 |
| 2006 | CR_SERVER_GONE_ERROR | 服務器已斷開 | 超時、大封包、服務重啟、OOM Killer |
| 2013 | CR_SERVER_LOST | 查詢中連線斷開 | 同 2006、長查詢超時 |
| 2026 | CR_SSL_CONNECTION_ERROR | SSL 連線錯誤 | 憑證過期、CA 不信任、TLS 版本不協商 |
errno、sqlstate、完整 SQL 與參數。perror 1045 命令列即可查看簡要說明。