| 代碼 | 訊息 | 常見原因與處理 |
|---|---|---|
| 1005 | Can't create table | 外鍵定義錯誤、磁碟空間不足、權限問題 |
| 1006 | Can't create database | 目錄權限、磁碟空間、檔案系統錯誤 |
| 1007 | Database exists | 建庫前先 DROP IF EXISTS 或換名 |
| 1008 | Database doesn't exist | 拼寫錯誤、大小寫敏感(Linux)、未建立 |
| 1016 | Can't open file | 表損壞、檔案遺失、權限不足 → REPAIR TABLE |
| 1021 | Disk full | 清理空間、擴充磁碟、檢查 tmpdir |
| 1022 | Duplicate key | 唯一鍵/主鍵衝突 → 檢查資料或 INSERT IGNORE |
| 1032 | Record not found | 更新/刪除條件不匹配、並發下資料已變更 |
| 1036 | Table is read only | 磁碟滿、權限、MyISAM 唯讀標記 → myisamchk -r |
| 1037 | Out of memory | 增加 innodb_buffer_pool_size、重啟服務 |
| 1038 | Sort memory full | 調大 sort_buffer_size、優化 ORDER BY |
| 1040 | Too many connections | 調大 max_connections、檢查連線洩漏 |
| 1042 | Bad host | DNS 解析失敗、skip-name-resolve、hosts 檔 |
| 1044 | Access denied for user | 權限不足 → GRANT、檢查 host 欄位 |
| 1045 | Access denied (password) | 帳密錯誤、FLUSH PRIVILEGES、密碼插件不符 |
| 1048 | Column can't be null | 欄位定義 NOT NULL 但傳入 NULL |
| 1049 | Unknown database | 資料庫不存在、拼寫、大小寫 |
| 1050 | Table exists | 建表前 DROP IF EXISTS |
| 1051 | Unknown table | 表不存在、拼寫、大小寫 |
| 1054 | Unknown column | 欄位不存在、拼寫、ALTER TABLE 未執行 |
| 1062 | Duplicate entry | 唯一鍵衝突、主鍵重複 → ON DUPLICATE KEY UPDATE |
| 1064 | SQL syntax error | 語法錯誤、保留字未加反引號、註解 -- 後需空格 |
| 1065 | Empty query | 傳入空 SQL 字串 |
| 1081 | Can't create socket | socket 檔案權限、tmpdir、SELinux |
| 1114 | Table is full | MyISAM 檔案大小限制、磁碟滿、InnoDB 表空間滿 |
| 1116 | Too many open tables | 調大 table_open_cache、關閉未用表 |
| 1129 | Host blocked | 連線錯誤過多 → FLUSH HOSTS、調大 max_connect_errors |
| 1130 | Host not allowed | user 表 host 欄位未授權 → 改為 % 或指定 IP |
| 1133 | User doesn't exist | 帳號不存在、拼寫、host 不匹配 |
| 1141 | No db access | GRANT ON db.* |
| 1142 | No table access | GRANT ON db.table |
| 1143 | No column access | GRANT SELECT(col) ON db.table |
| 1146 | Table doesn't exist | 同 1051 |
| 1147 | Grant not defined | 權限未定義 → 補 GRANT |
| 1149 | Syntax error | 同 1064 |
| 1158-1161 | Network errors | 網路不穩、防火牆、wait_timeout、max_allowed_packet |
| 1169 | Duplicate unique | 同 1062 |
| 1177 | Can't open table | 表損壞、鎖定、權限 |
| 1180 | Commit failed | 儲存引擎錯誤、磁碟、死鎖 |
| 1181 | Rollback failed | 同 1180 |
| 1193 | Unknown variable | 預存程序變數未宣告 |
| 1203 | User max connections | 單用戶連線上限 → MAX_USER_CONNECTIONS |
| 1205 | Lock wait timeout | 死鎖、長交易 → innodb_lock_wait_timeout、優化索引 |
| 1211 | No create user priv | 需 CREATE USER 權限 |
| 1216 | FK child fails | 子表外鍵值父表無對應 → 先插父表 |
| 1217 | FK parent fails | 父表被引用無法刪改 → 先處理子表 |
| 1226 | User resource exceeded | 資源配額用盡 → 重啟或調大限制 |
| 1227 | Access denied (specific) | 缺少特定權限(如 SUPER、FILE) |
| 1235 | Version too old | 功能需較新版本 → 升級 MySQL |
| 2002 | Can't connect to server | 服務未啟動、socket/tcp 埠錯誤、防火牆 |
下表對應 MySQL 官方錯誤符號、代碼與 SQLSTATE,供開發時程式化判斷使用。
| 符號 | 代碼 | SQLSTATE |
|---|---|---|
| ER_HASHCHK | 1000 | HY000 |
| ER_NISAMCHK | 1001 | HY000 |
| ER_CANT_CREATE_FILE | 1004 | HY000 |
| ER_CANT_CREATE_TABLE | 1005 | HY000 |
| ER_CANT_CREATE_DB | 1006 | HY000 |
| ER_DB_CREATE_EXISTS | 1007 | HY000 |
| ER_DB_DROP_EXISTS | 1008 | HY000 |
| ER_DB_DROP_DELETE | 1009 | HY000 |
| ER_DB_DROP_RMDIR | 1010 | HY000 |
| ER_CANT_DELETE_FILE | 1011 | HY000 |
| ER_CANT_FIND_SYSTEM_REC | 1012 | HY000 |
| ER_CANT_GET_STAT | 1013 | HY000 |
| ER_CANT_GET_WD | 1014 | HY000 |
| ER_CANT_LOCK | 1015 | HY000 |
| ER_CANT_OPEN_FILE | 1016 | HY000 |
| ER_FILE_NOT_FOUND | 1017 | HY000 |
| ER_CANT_READ_DIR | 1018 | HY000 |
| ER_CANT_SET_WD | 1019 | HY000 |
| ER_CHECKREAD | 1020 | HY000 |
| ER_DISK_FULL | 1021 | HY000 |
| ER_DUP_KEY | 1022 | 23000 |
| ER_ERROR_ON_CLOSE | 1023 | HY000 |
| ER_ERROR_ON_READ | 1024 | HY000 |
| ER_ERROR_ON_RENAME | 1025 | HY000 |
| ER_ERROR_ON_WRITE | 1026 | HY000 |
| ER_FILE_USED | 1027 | HY000 |
| ER_FILSORT_ABORT | 1028 | HY000 |
| ER_FORM_NOT_FOUND | 1029 | HY000 |
| ER_GET_ERRNO | 1030 | HY000 |
| ER_ILLEGAL_HA | 1031 | HY000 |
| ER_KEY_NOT_FOUND | 1032 | HY000 |
| ER_NOT_FORM_FILE | 1033 | HY000 |
| ER_NOT_KEYFILE | 1034 | HY000 |
| ER_OLD_KEYFILE | 1035 | HY000 |
| ER_OPEN_AS_READONLY | 1036 | HY000 |
| ER_OUTOFMEMORY | 1037 | HY001 |
| ER_OUT_OF_SORTMEMORY | 1038 | HY001 |
| ER_UNEXPECTED_EOF | 1039 | HY000 |
| ER_CON_COUNT_ERROR | 1040 | 08004 |
| ER_OUT_OF_RESOURCES | 1041 | 08004 |
| ER_BAD_HOST_ERROR | 1042 | 08S01 |
| ER_HANDSHAKE_ERROR | 1043 | 08S01 |
| ER_DBACCESS_DENIED_ERROR | 1044 | 42000 |
| ER_ACCESS_DENIED_ERROR | 1045 | 42000 |
| ER_NO_DB_ERROR | 1046 | 42000 |
| ER_UNKNOWN_COM_ERROR | 1047 | 08S01 |
| ER_BAD_NULL_ERROR | 1048 | 23000 |
| ER_BAD_DB_ERROR | 1049 | 42000 |
| ER_TABLE_EXISTS_ERROR | 1050 | 42S01 |
| ER_BAD_TABLE_ERROR | 1051 | 42S02 |
| ER_NON_UNIQ_ERROR | 1052 | 23000 |
| ER_SERVER_SHUTDOWN | 1053 | 08S01 |
| ER_BAD_FIELD_ERROR | 1054 | 42S22 |
| ER_DUP_ENTRY | 1062 | 23000 |
| ER_PARSE_ERROR | 1064 | 42000 |
| ER_EMPTY_QUERY | 1065 | 42000 |
| ER_INVALID_DEFAULT | 1067 | 42000 |
| ER_MULTIPLE_PRI_KEY | 1068 | 42000 |
| ER_TOO_MANY_KEYS | 1069 | 42000 |
| ER_TOO_MANY_KEY_PARTS | 1070 | 42000 |
| ER_TOO_LONG_KEY | 1071 | 42000 |
| ER_KEY_COLUMN_DOES_NOT_EXITS | 1072 | 42000 |
| ER_BLOB_USED_AS_KEY | 1073 | 42000 |
| ER_TOO_BIG_FIELDLENGTH | 1074 | 42000 |
| ER_WRONG_AUTO_KEY | 1075 | 42000 |
| ER_IPSOCK_ERROR | 1081 | 08S01 |
| ER_RECORD_FILE_FULL | 1114 | HY000 |
| ER_TOO_MANY_TABLES | 1116 | HY000 |
| ER_HOST_IS_BLOCKED | 1129 | HY000 |
| ER_HOST_NOT_PRIVILEGED | 1130 | HY000 |
| ER_PASSWORD_NO_MATCH | 1133 | 42000 |
| ER_TABLEACCESS_DENIED_ERROR | 1142 | 42000 |
| ER_COLUMNACCESS_DENIED_ERROR | 1143 | 42000 |
| ER_NO_SUCH_TABLE | 1146 | 42S02 |
| ER_SYNTAX_ERROR | 1149 | 42000 |
| ER_NET_READ_ERROR | 1158 | 08S01 |
| ER_NET_READ_INTERRUPTED | 1159 | 08S01 |
| ER_NET_ERROR_ON_WRITE | 1160 | 08S01 |
| ER_NET_WRITE_INTERRUPTED | 1161 | 08S01 |
| ER_DUP_UNIQUE | 1169 | 23000 |
| ER_CHECK_NO_SUCH_TABLE | 1177 | 42000 |
| ER_ERROR_DURING_COMMIT | 1180 | HY000 |
| ER_ERROR_DURING_ROLLBACK | 1181 | HY000 |
| ER_UNKNOWN_SYSTEM_VARIABLE | 1193 | HY000 |
| ER_TOO_MANY_USER_CONNECTIONS | 1203 | 42000 |
| ER_LOCK_WAIT_TIMEOUT | 1205 | HY000 |
| ER_NO_PERMISSION_TO_CREATE_USER | 1211 | 42000 |
| ER_NO_REFERENCED_ROW | 1216 | 23000 |
| ER_ROW_IS_REFERENCED | 1217 | 23000 |
| ER_USER_LIMIT_REACHED | 1226 | 42000 |
| ER_SPECIFIC_ACCESS_DENIED_ERROR | 1227 | HY000 |
| ER_NOT_SUPPORTED_YET | 1235 | 42000 |
errno(數字代碼)而非訊息文字。SQLSTATE 可跨資料庫移植錯誤處理邏輯。