萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 常見錯誤代碼對照表與解決方案全集

錯誤代碼速查表

代碼含義常見原因解決方向
1005創建表失敗外鍵定義錯誤、引擎不支持檢查外鍵語法、引擎一致性
1006創建庫失敗權限不足、路徑不存在檢查數據目錄權限
1007庫已存在重複創建CREATE DATABASE IF NOT EXISTS
1008庫不存在拼寫錯誤、已刪除確認庫名
1016無法打開文件表損壞、文件丟失、權限myisamchk -r / mysqlcheck -r
1021磁盤空間不足分區滿清理日誌、擴容、遷移數據目錄
1022鍵值重複主鍵/唯一鍵衝突檢查業務邏輯、IGNORE/REPLACE
1032記錄不存在UPDATE/DELETE 無匹配行檢查 WHERE 條件
1036表只讀備份鎖、只讀屬性、磁盤滿解鎖、檢查磁盤、FLUSH TABLES
1037內存不足排序緩衝、連接過多重啟、調大 sort_buffer_size
1038排序內存不足大結果集排序調大 sort_buffer_size、優化 SQL
1040連接數滿最大連接數耗盡調大 max_connections、檢查泄漏
1042無效主機名DNS 解析失敗、skip-name-resolve用 IP、配置 hosts、關閉反解
1044無訪問權限賬號無庫權限GRANT 授權
1045用戶名/密碼錯誤認證失敗重置密碼、檢查主機匹配
1062唯一鍵重複數據衝突業務去重、ON DUPLICATE KEY UPDATE
1146表不存在拼寫、大小寫、庫未選檢查 lower_case_table_names
1153包太大單行/包超過 max_allowed_packet調大參數、分批處理
1205鎖等待超時死鎖、長事務優化索引、縮短事務、檢查死鎖日誌
1213死鎖循環等待鎖統一加鎖順序、重試邏輯
2006服務器斷開超時、包太大、服務崩潰調大 wait_timeout/max_allowed_packet
2013查詢中斷網絡、超時、KILL檢查網絡、長查詢優化

核心故障處理流程

1. 表損壞修復 (1016, 1036, 1062 相關)

# MyISAM
myisamchk -r /var/lib/mysql/db/tbl.MYI  # -r 恢復,-f 強制

# InnoDB / 通用
mysqlcheck -r -o db_name -u root -p  # -r 修復,-o 優化
# 或 SQL
REPAIR TABLE tbl_name;
OPTIMIZE TABLE tbl_name;

2. 磁盤空間不足 (1021)

df -h  # 查看分區使用率
du -sh /var/lib/mysql/*  # 定位大庫
# 清理:二進制日誌、錯誤日誌、臨時文件、舊備份
PURGE BINARY LOGS BEFORE '2023-01-01';

3. 連接數耗盡 (1040)

SHOW VARIABLES LIKE 'max_connections';
SHOW STATUS LIKE 'Threads_connected';
# 臨時調大
SET GLOBAL max_connections = 1000;
# 永久修改 my.cnf
[mysqld]
max_connections = 1000

4. 密碼錯誤/權限問題 (1044, 1045)

# 重置密碼參考 73103 文章
# 授權
GRANT ALL ON db.* TO 'user'@'%' IDENTIFIED BY 'pass';
FLUSH PRIVILEGES;

預防性維護清單

  • 定期 ANALYZE TABLE 更新統計信息
  • 監控 Innodb_buffer_pool_wait_free、Threads_connected、Slow_queries
  • 設置 log_error、slow_query_log、long_query_time
  • 配置 expire_logs_days 自動清理 Binlog
  • 備份驗證:定期恢復演練
copyright © 萬盛學電腦網 all rights reserved