首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 常見錯誤代碼完整對照表與解決方案

     編輯:MySQL 資料庫相關知識

錯誤代碼分類速查

範圍類別典型代碼
1000-1099一般伺服器錯誤1005, 1006, 1016, 1030, 1040, 1045, 1062, 1064
1100-1199查詢執行錯誤1114, 1130, 1146, 1158-1161, 1180, 1181
1200-1299複寫/交易/權限錯誤1203, 1205, 1216, 1217, 1226, 1227, 1250, 1251
2000-2099客戶端/連線錯誤2002, 2003, 2008, 2013
10000+作業系統/網路錯誤10048, 10055, 10061

高頻錯誤詳細解析與解決方案

連線類

代碼訊息原因解決方案
1040Too many connections達到 max_connections 限制調大 max_connections、檢查連線洩漏、使用連線池
1042Bad host nameDNS 解析失敗/主機名錯誤檢查 /etc/hosts、DNS 設定、使用 IP 直連
1043Bad handshake協議版本不匹配/SSL 問題確認客戶端/伺服器版本相容、嘗試 --skip-ssl
1045Access denied帳號/密碼/主機/權限錯誤重設密碼、檢查 user.Host 欄位、授權 GRANT
1130Host not allowed該 IP 無連線權限GRANT ... TO 'user'@'%' IDENTIFIED BY 'pwd'; FLUSH PRIVILEGES;
2002Can't connect to socketSocket 路徑錯誤/服務未啟動檢查 socket 參數、啟動服務、指定 --protocol=tcp
2003Can't connect to server服務未啟動/防火牆阻擋/埠錯誤啟動 mysqld、開放 3306、確認 bind-address
2013Lost connection during query查詢太久/封包太大/網路中斷調大 max_allowed_packet、net_read_timeout、優化慢查詢

權限與語法類

代碼訊息解決方案
1044Access denied for user to databaseGRANT ALL ON db.* TO 'user'@'host';
1046No database selected連線後執行 USE db_name; 或指定 mysql -D db_name
1049Unknown database資料庫不存在,先 CREATE DATABASE
1050Table already exists使用 CREATE TABLE IF NOT EXISTS 或先 DROP
1051Unknown table表名拼寫錯誤/大小寫敏感(Linux)/未選正確資料庫
1054Unknown column欄位不存在,檢查 Schema 或執行 ALTER TABLE ADD COLUMN
1062Duplicate entry for key唯一鍵/主鍵衝突,檢查資料或使用 INSERT IGNORE/ON DUPLICATE KEY UPDATE
1064SQL syntax error語法錯誤,檢查保留字需反引號、引號配對、MySQL 版本語法差異
1146Table doesn't exist同 1051,或表已損壞需 REPAIR TABLE
1149Syntax error同 1064
1251Client does not support authentication protocol舊客戶端連新伺服器(caching_sha2_password),升級客戶端或改用 mysql_native_password

資源與儲存類

代碼訊息解決方案
1016Can't open file檔案損壞/權限問題,REPAIR TABLE、檢查磁碟空間、inode
1021Disk full清理空間、擴充磁碟、調整 tmpdir
1037Out of memory重啟服務、調小 sort_buffer_size/join_buffer_size、檢查記憶體洩漏
1038Out of sort memory調大 sort_buffer_size、優化 ORDER BY 查詢
1114Table is fullMyISAM 檔案大小限制/磁碟滿/InnoDB tablespace 滿,ALTER TABLE MAX_ROWS、擴充空間
1116Too many open tables調大 table_open_cache、open_files_limit
1203User already has max connections單用戶連線數達 max_user_connections,調大或修正連線洩漏
1226User has exceeded resource limits超過 MAX_QUERIES_PER_HOUR 等限制,調整用戶資源配額

複寫與交易類

代碼訊息解決方案
1205Lock wait timeout exceeded調大 innodb_lock_wait_timeout、優化長交易、檢查死鎖
1216Cannot add or update child row外鍵約束失敗:父表無對應記錄,先插入父表或關閉檢查
1217Cannot delete or update parent row外鍵約束:子表仍有引用,先刪子表或 CASCADE
1180Commit failed檢查錯誤日誌、磁碟空間、Binlog 寫入問題
1181Rollback failed同上,可能是儲存引擎損壞

作業系統/網路層錯誤

代碼訊息解決方案
10048Address already in use埠被佔用,netstat -an | findstr 3306 找出進程、殺掉或改埠
10055No buffer space available系統 TCP 緩衝區耗盡,調整註冊表 TcpTimedWaitDelay、MaxUserPort、重啟
10061Connection refused服務未啟動/防火牆/bind-address 錯誤,檢查錯誤日誌、啟動服務

通用排查流程

  1. 確認錯誤代碼:SHOW ERRORS;、SHOW WARNINGS;、應用程式日誌
  2. 查閱官方文件:MySQL Error Reference
  3. 檢查錯誤日誌:/var/log/mysql/error.log 或 hostname.err
  4. 驗證環境狀態:服務狀態、磁碟空間、記憶體、網路、防火牆
  5. 重現最小案例:簡化 SQL、隔離變數、在測試環境驗證
  6. 應用修正並驗證:配置調整、SQL 重寫、索引優化、版本升級

預防勝於治療

  • 建立變更管理流程:配置變更、Schema 變更必經審查與測試
  • 監控關鍵指標:連線數、慢查詢、磁碟使用、錯誤率、複寫延遲
  • 定期演練故障恢復:備份還原、主從切換、誤刪資料恢復
  • 保持版本更新:及時套用安全補丁、效能改善版本

建立團隊專屬「錯誤代碼速查卡」,針對業務常見錯誤預先準備解決腳本,能將事故處理時間從小時縮減至分鐘。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved