首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

IBM DB2 錯誤代碼完整速查手冊:SQLCODE、SQLSTATE、中文說明、常見場景與解決方案

     編輯:DB2 教學

DB2 開發與運維中,快速解讀錯誤代碼是解決問題的第一步。本文彙整 IBM DB2 常見 SQLCODE (正/負)、SQLSTATE、中文說明、觸發場景與解決方向,涵蓋警告 (01xxx)、成功 (000)、語法錯誤 (42xxx)、資源限制 (54xxx)、權限 (425xx)、資料完整性 (23xxx)、通訊 (08xxx) 等主要類別,做為桌邊速查手冊。

代碼結構速讀

  • SQLCODE:正數 = 警告 (01xxx);0 = 成功;負數 = 錯誤
  • SQLSTATE:5 字元標準代碼,首兩字元分類:
    00 成功、01 警告、02 無資料、08 連線、22 資料異常、23 完整性違規、42 語法/存取規則、54 資源限制、55 物件不存在、56 權限、57 資源不可用、58 系統錯誤

高頻錯誤代碼分類速查表

成功與警告 (0, +01xxx)

SQLCODESQLSTATE說明常見場景/處理
000000成功完成正常
+10002000無符合條件列游標 FETCH 結束、單列子查詢無結果 → 檢查 WHERE 條件
+11701525插入值個數 ≠ 表欄位數INSERT 明確列出欄位名,或調整 VALUES
+20401532物件未定義表/視圖/索引不存在 → 檢查 Schema、權限、大小寫
+20601533欄位不存在於指定表拼寫錯誤、Schema 錯誤、欄位已刪除
+30401515值超出宿主變數範圍數值溢位、字串截斷 → 調整變數定義
+40201521未知位置主機變數參考錯誤
+44501004CAST 截斷目標型別長度不足 → 擴大長度或截斷源資料
+80201519數值溢位/除零算術運算異常 → 加 CASE WHEN 分母=0 處理

語法與存取規則錯誤 (-42xxx, -1xx)

SQLCODESQLSTATE說明處理
-00742601非法字元SQL 含不可見字元、全形符號 → 重寫
-01042603字串常數未閉合缺單引號、雙引號混用
-02942601缺少 INTO 子句SELECT INTO 變數遺漏
-06042815資料型別長度/規範無效VARCHAR(0)、DECIMAL(5,6) 等邏輯錯誤
-08442612動態 SQL 無效 / OS/390 不支援靜態 SQL 中用動態特性、平台差異
-10154001SQL 陳述式過長/複雜拆分 SQL、使用視圖/CTE、調大 STMTHEAP
-10342604無效數值常數數值格式錯誤 (如 1.2.3)
-10442601非法符號關鍵字拼錯、標點誤用、保留字未加引號
-10742622物件名過長表/欄位/索引名超過 128 位元組
-10942601視圖含 ORDER BY視圖定義移除 ORDER BY,改用外層查詢排序
-11742802插入值數 ≠ 目標欄位數明確列出 INSERT 欄位
-11942803HAVING/GROUP BY 欄位不符HAVING 引用非 GROUP BY 欄位且非聚合
-12142701INSERT/UPDATE 重複引用同欄位移除重複 SET 子句
-12242803列函數欄位未在 GROUP BY加入 GROUP BY 或移除列函數
-12542805ORDER BY 數字無效位置數字超出 SELECT 列範圍
-12954004SQL 含超過 15 個表拆分查詢、使用視圖、調大參數
-13022019ESCAPE 必須單一字元LIKE ... ESCAPE 'xx' → 修正為單字元

資料完整性與約束違規 (-23xxx, -53x, -54x)

SQLCODESQLSTATE說明處理
-40723502NOT NULL 欄位插入 NULL提供預設值、檢查應用邏輯
-53023503外鍵違規 (父鍵不存在)先插入父表、檢查關聯資料
-53123504父鍵被子表引用無法刪除先刪子表、或設 CASCADE/SET NULL
-53223505唯一索引/主鍵重複檢查業務唯一性、用 MERGE/UPSERT
-54423522CHECK 約束違規資料不符合定義條件
-54523513觸發器/約束導致違規檢查觸發器邏輯

權限與物件不存在 (-55x, -204, -206, -727)

SQLCODESQLSTATE說明處理
-20442704物件未定義建立物件、授權、確認 Schema 路徑
-20642703欄位不存在修正拼寫、ALTER TABLE ADD COLUMN
-55142501缺少物件操作權限GRANT SELECT/INSERT/UPDATE/DELETE/REFERENCES
-55242502缺少管理權限GRANT DBADM/SECADM/SYSADM
-72756098隱含物件建立失敗 (如索引)檢查底層錯誤 (通常是空間/權限)

通訊與資源錯誤 (-08xxx, -9xx, -10xx, -90x, -95x)

SQLCODESQLSTATE說明處理
-3008108001通訊錯誤/連線失敗檢查主機、埠、防火牆、DB2COMM、實例狀態
-3008208004連線被拒/安全失敗認證失敗、加密不匹配、Kerberos 問題
-90158004系統錯誤 (通常伴隨 SQLCA sqlerrmc)查看 db2diag.log、聯繫 IBM 支援
-90258005系統錯誤 (嚴重)同上,可能需重啟實例
-90657019資源不可用 (鎖逾時/死鎖)檢查鎖等待、調大 LOCKTIMEOUT、優化 SQL
-91140001死鎖/鎖逾時受害者回滾統一存取順序、縮短交易、RETRY 邏輯
-95257011處理中斷 (用戶取消/強制斷開)應用層處理中斷信號
-96457011交易日誌滿擴大 LOGFILSZ/LOGPRIMARY、檢查長交易、歸檔滯後
-96857011表空間滿ALTER TABLESPACE ADD/EXTEND/RESIZE CONTAINER
-97057011資料庫管理器記憶體不足調大 DATABASE_MEMORY、啟用 STMM

除錯黃金三步驟

  1. 查 SQLCODE/SQLSTATE:應用日誌、db2diag.log、CLP 回傳
  2. 對照本手冊/官方文檔:確認分類與典型原因
  3. 定位具體 SQL 與環境:db2pd -dynamic、db2caem、MON_GET_PKG_CACHE_STMT 找到問題陳述式、執行計劃、參數值

線上查詢資源

  • IBM Knowledge Center:db2 "? SQLCODE (CLP 內建)
  • 命令列:db2 "? SQL30081N" 顯示詳細說明
  • SQLSTATE 官方定義:ISO 9075 / ANSI X3.135

將此手冊加入書籤,遇到錯誤代碼 30 秒內定位方向,讓除錯從「大海撈針」變為「順藤摸瓜」。

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