| 錯誤碼 | 訊息 | 典型成因 | 解決方向 |
|---|---|---|---|
| 1040 | Too many connections | 達到 max_connections 限制 | 增大參數、優化慢查詢、連線池複用 |
| 1042 | Bad host name | DNS 解析失敗、主機名拼寫錯誤 | 檢查 /etc/hosts、DNS、用 IP 直連 |
| 1043 | Invalid connection | 網路中斷、防火牆、MySQL 未啟動 | 檢查服務、端口、防火牆、網路通道 |
| 1044 | Access denied for user to database | 用戶無該庫權限 | GRANT ... ON db.* TO user@host |
| 1045 | Access denied (user/pass wrong) | 密碼錯誤、用戶不存在、主機不匹配 | 重置密碼、檢查 Host 欄、FLUSH PRIVILEGES |
| 1130 | Host not allowed to connect | 用戶 Host 欄位不匹配(如 '%' vs 'localhost') | 授權正確 Host、刪除匿名用戶 |
| 1133 | User does not exist | 用戶確實不存在 | CREATE USER + GRANT |
| 1226 | User resource limit exceeded | 超過 MAX_QUERIES_PER_HOUR 等配額 | 調整配額、優化應用查詢頻率 |
| 1227 | Access denied; need SUPER privilege | 操作需 SUPER 權限 | 授予 SUPER 或改用低權限方案 |
| 錯誤碼 | 訊息 | 典型成因 | 解決方向 |
|---|---|---|---|
| 1005 | Can't create table (errno: 150) | 外鍵定義錯誤(引用表/欄位不存在、型別不匹配、無索引) | 檢查 REFERENCES 定義、確保被引用欄位有索引 |
| 1007 | Database exists | 重複 CREATE DATABASE | IF NOT EXISTS 或先 DROP |
| 1008 | Database doesn't exist | 操作不存在的庫 | 確認名稱、SHOW DATABASES |
| 1050 | Table already exists | 重複 CREATE TABLE | IF NOT EXISTS |
| 1051 | Unknown table | 表不存在 | 確認名稱、SHOW TABLES |
| 1054 | Unknown column | 欄位不存在 | 確認拼寫、DESC table、遷移腳本順序 |
| 1065 | Empty query | 執行空 SQL | 檢查應用 SQL 建構邏輯 |
| 1146 | Table doesn't exist | 同 1051 | 同 1051 |
| 1147 | Undefined user table access | 權限表損壞 | mysql_upgrade、重建授權表 |
| 錯誤碼 | 訊息 | 典型成因 | 解決方向 |
|---|---|---|---|
| 1022 | Can't write; duplicate key | 唯一鍵/主鍵衝突 | 檢查業務邏輯、INSERT IGNORE/ON DUPLICATE KEY UPDATE |
| 1048 | Column cannot be null | NOT NULL 欄位插入 NULL | 應用層非空驗證、設 DEFAULT |
| 1062 | Duplicate entry for key | 同 1022,含具體鍵值 | 同 1022 |
| 1169 | Can't update; duplicate key | UPDATE 導致唯一鍵衝突 | 檢查更新值唯一性 |
| 1216 | FK constraint fails (child) | 子表插入/更新引用不存在的父鍵 | 先插入父表、檢查級聯動作 |
| 1217 | FK constraint fails (parent) | 父表刪除/更新被子表引用的鍵 | 先處理子表、設 ON DELETE CASCADE |
| 1263 | Column set to default; NULL to NOT NULL | 隱式轉換導致 NULL 寫入非空欄位 | 顯式指定值、嚴格模式 STRICT_TRANS_TABLES |
| 1264 | Out of range value for column | 數值超出欄位型別範圍 | 擴大型別、應用層範圍校驗 |
| 1265 | Data truncated for column | 字串超長/數值精度溢位被截斷 | 擴大欄位、啟用嚴格模式報錯而非截斷 |
| 錯誤碼 | 訊息 | 典型成因 | 解決方向 |
|---|---|---|---|
| 1021 | Disk full | 磁碟空間耗盡 | 清理日誌、擴容、歸檔冷數據 |
| 1037 | Out of memory | 記憶體不足 | 優化參數、增加實體記憶體、限制併發 |
| 1038 | Out of sort memory | sort_buffer_size 不足 | 增大參數、優化 ORDER BY |
| 1114 | The table is full | MyISAM 達到 4GB/2GB 限制、InnoDB 表空間滿 | 轉 InnoDB、擴充表空間、分區表 |
| 1116 | Too many open tables | table_open_cache 過小 | 增大參數、open_files_limit 配合 |
| 1158-1161 | Network read/write error/timeout | 網路不穩、MTU、防火牆、大封包 | 檢查網路、增大 net_read_timeout/net_write_timeout/max_allowed_packet |
| 1205 | Lock wait timeout exceeded | 行鎖等待超過 innodb_lock_wait_timeout (預設 50s) | 優化事務長度、索引、增大超時 |
| 錯誤碼 | 訊息 | 典型成因 | 解決方向 |
|---|---|---|---|
| 1067 | Process terminated unexpectedly | 啟動失敗(配置錯誤、資料損壞、權限、SELinux) | 查看錯誤日誌、mysqld --verbose --help 驗證配置 |
| 1180 | Commit failed | 事務提交失敗(磁碟、鎖、複寫衝突) | 查看具體錯誤日誌 |
| 1181 | Rollback failed | 事務回滾失敗 | 同上 |
| 1203 | User max connections reached | 單用戶達到 max_user_connections | 增大限制、連線池複用 |
| 1235 | MySQL version too old for feature | 功能需較高版本(如 CTE 需 8.0、Window Function 需 8.0) | 升級版本、改用相容寫法 |
| 1317 | Query execution was interrupted | KILL QUERY 或 max_execution_time 觸發 | 優化慢查詢、調整超時 |
SHOW VARIABLES LIKE 'lc_messages_dir'; SHOW VARIABLES LIKE 'lc_messages'; 確認語言包perror 1062(系統命令)快速查錯誤碼含義/var/log/mysql/error.log 看完整堆疊