| 代碼範圍 | 類別 | 典型代碼 |
|---|---|---|
| 1005~1011 | 建立/刪除資料庫/資料表失敗 | 1005 建表失敗、1007 資料庫已存在、1008 資料庫不存在 |
| 1020~1032 | 資料操作與檔案 IO | 1021 磁碟空間不足、1032 記錄不存在 |
| 1036~1049 | 資料表狀態與連線 | 1036 唯讀表、1040 連線數達上限、1045 帳號密碼錯誤、1049 資料庫不存在 |
| 1050~1065 | 物件已存在/不存在/語法 | 1050 資料表已存在、1051 資料表不存在、1054 欄位不存在、1065 空 SQL |
| 1081~1116 | 網路/資源/資料表滿 | 1081 Socket 失敗、1114 表滿、1116 開啟表過多 |
| 1129~1161 | 權限/語法/網路逾時 | 1130 連線權限、1146 表不存在、1149 語法錯誤、1158-1161 網路讀寫逾時 |
| 1062/1169/1177/1180/1181 | 重複鍵/鎖定/事務 | 1062 Duplicate entry、1205 Lock wait timeout、1180 Commit 失敗、1181 Rollback 失敗 |
| 1203~1235 | 連線/資源/權限/版本 | 1203 使用者連線達上限、1216/1217 FK 約束失敗、1226 資源超限、1227 權限不足、1235 版本過低 |
max_connections (預設 151)。SET GLOBAL max_connections = 500; (配合 open_files_limit、記憶體評估);檢查應用連線池洩漏;啟用 thread_pool (Percona/MySQL 8.0+)。user@'%' vs user@'localhost')、skip-grant-tables 未重新載入權限。FLUSH PRIVILEGES;、確認 mysql.user Host 欄位、重設密碼 ALTER USER 'user'@'host' IDENTIFIED BY 'pwd';。INSERT IGNORE / ON DUPLICATE KEY UPDATE / 應用層去重 / 檢查自增種子 SHOW TABLE STATUS。 innodb_data_file_path 無 autoextend。innodb_lock_wait_timeout (預設 50s)。SHOW ENGINE INNODB STATUS。SET FOREIGN_KEY_CHECKS=0; (謹慎)、使用 ON DELETE CASCADE/SET NULL。SHOW ENGINE INNODB STATUS 查看最近死鎖/鎖等待。SHOW PROCESSLIST 找長時間查詢/睡眠連線。/var/log/mysql/error.log。SHOW VARIABLES LIKE 'max_connections'; 等。MySQL 錯誤代碼雖多,但高頻者集中在 **連線數、權限、重複鍵、鎖逾時、外鍵、磁碟空間**。建立對照表並熟悉對應排查指令,可大幅縮短事故處理時間。