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

MySQL 錯誤碼查詢三大官方途徑:手冊附錄、線上文檔、perror 命令列工具

     編輯:MySQL 資料庫相關知識

途徑一:官方參考手冊附錄 B

《MySQL Reference Manual》→ Appendix B. Error Codes and Messages,含完整錯誤碼、SQLSTATE、訊息對照表,適合離線查閱。

途徑二:線上文檔錯誤處理章節

網址:https://dev.mysql.com/doc/refman/5.7/en/error-handling.html(依版本調整 5.6/5.7/8.0)
優勢:永遠同步最新版本、可搜尋、含 SQLSTATE 對照。

途徑三:perror 命令列工具(最快、離線)

安裝 MySQL 後自帶於 bin/ 目錄:

# Linux/macOS
/usr/local/mysql/bin/perror 10 127 134

# Windows
C:\Program Files\MySQL\MySQL Server 5.7\bin\perror.exe 10 127 134

輸出範例

$ perror 10 127 134
Error code 10: No child processes
Error code 127: Network is down
Error code 134: Transport endpoint is not connected

支援一次查詢多個代碼,腳本整合極便利。

常見錯誤碼速查表(節錄)

代碼SQLSTATE訊息典型原因
1005HY000Can't create table外鍵定義錯誤、磁碟滿、權限
1007HY000Database existsCREATE DATABASE 未加 IF NOT EXISTS
104528000Access denied帳號/密碼錯誤、Host 不匹配、權限表損壞
106223000Duplicate entry主鍵/唯一鍵衝突
114642S02Table doesn't exist拼寫錯誤、大小寫敏感、Schema 錯誤
1205HY000Lock wait timeout長事務、索引缺失、死鎖
121340001Deadlock found並發更新同一記錄、不同順序鎖表
2006HY000MySQL server has gone away封包過大、超時、服務重啟
2013HY000Lost connection during query網路抖動、查詢過慢觸發 timeout

Java 專案整合範例(枚舉 + 快速查找)

public enum MySQLErrorCode {
  ER_CANT_CREATE_TABLE(1005, "Can't create table"),
  ER_DB_CREATE_EXISTS(1007, "Database exists"),
  ER_DUP_ENTRY(1062, "Duplicate entry"),
  ER_LOCK_WAIT_TIMEOUT(1205, "Lock wait timeout"),
  ER_DEADLOCK(1213, "Deadlock found"),
  ER_SERVER_GONE(2006, "MySQL server has gone away"),
  ER_LOST_CONNECTION(2013, "Lost connection during query");

  private final int code;
  private final String msg;
  MySQLErrorCode(int code, String msg) { this.code = code; this.msg = msg; }
  public static String getMsg(int code) {
    for (MySQLErrorCode e : values()) if (e.code == code) return e.msg;
    return "Unknown error code: " + code;
  }
}

結語

遇到 MySQL 錯誤碼,**首選 perror 秒級定義**,次查線上文檔確認 SQLSTATE 與版本差異,最後將高頻錯誤碼封裝為專案常見異常類,實現「錯誤碼 → 業務語義」的自動轉譯,加速排錯。

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