首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

BDE 錯誤代碼完整對照與排查指南

     編輯:關於C++

前言:什麼是 BDE 錯誤代碼?

Borland Database Engine (BDE) 是早期 Delphi/C++Builder 核心資料庫引擎。當資料庫操作發生異常時,BDE 會回傳 16 進位錯誤代碼(如 $2108 / 8456)。本文整理官方完整代碼表,並按類別分組說明常見錯誤成因與解決方案。

錯誤代碼分類總覽

代碼範圍 (Hex)十進位類別名稱主要說明
$00000成功完成操作正常結束
$0021~$003433~52通用錯誤類別系統、資料損壞、I/O、資源、鎖定、存取、網路等
$003E~$003F62~63驅動/內部符號驅動程式特定錯誤、內部符號
$2100~$21FF8448~8703系統錯誤 (SYS)配置檔、DLL 載入、暫存檔、非法重入
$2200~$22FF8704~8959物件未找到 (OBJ)資料表/記錄/索引/BLOB/語言驅動程式找不到
$2300~$23FF8960~9215資料損壞 (COR)表頭、索引、鎖檔、家族檔、.VAL 檔損壞
$2400~$24FF9216~9471I/O 錯誤 (IO)讀寫失敗、目錄存取、檔案刪除、鎖定衝突
$2500~$25FF9472~9727資源/限制 (LIM)記憶體、檔案控制代碼、磁碟空間、游標、連線數上限
$2600~$26FF9728~9983資料完整性 (INT)鍵值違規、查核失敗、主從表關聯、參考完整性
$2700~$27FF9984~10239無效請求 (REQ)參數、檔案名、控制代碼、索引、欄位、表格、密碼錯誤
$2800~$28FF10240~10495鎖定違規 (LCK)記錄/表格/目錄鎖定、逾時、死結、獨佔存取失敗
$2900~$29FF10496~10751存取/安全 (ACC)欄位/表格/家族權限、加密、SQL 權限
$2A00~$2AFF10752~11007無效上下文 (CTX)BLOB 狀態、驅動程式初始化、工作階段混用、只讀衝突
$2B00~$2BFF11008~11263作業系統錯誤 (OS)檔案不存在、權限、記憶體、裝置、共享違規、磁碟錯誤
$2C00~$2CFF11264~11519網路錯誤 (NET)初始化、用戶上限、.NET 版本、鎖定、SQL Server 連線
$2D00~$2DFF11520~11775選用參數 (OPT)參數遺漏、無效
$2E00~$2EFF11776~12031查詢處理器 (QBE/SQL)語法、運算式、群組、插入/刪除/修改、解析、BLOB 限制
$2F00~$2FFF12032~12287版本不符 (VER)引擎版本、索引、.VAL、BLOB、DLL、Server 版本不符
$3000~$30FF12288~12543功能不支援 (CAP)未實作、複寫、多連線、dBASE 運算式
$3100~$31FF12544~12799系統配置 (CFG)別名、資料庫類型、網路類型、配置參數
$3200~$32FF12800~13055警告 (WARN)物件隱含刪除/修改/截斷、欄位修剪、多筆記錄
$3300~$33FF13056~13311雜項 (MISC)檔案已存在、BLOB 修改、SQL 錯誤、Paradox 版本
$3400~$34FF13312~13567相容性 (CMP)排序順序、語言驅動程式版本
$3500~$35FF13568~13823資料字典 (DIC)字典損壞、結構描述、視圖、關聯、交換檔
$3E00~$3EFF15872~16127驅動程式特定 (DRV)驅動名稱/版本/類型、載入失敗、語言驅動程式、廠商初始化
$3F00~$3FFF16128~16383內部符號/資訊 (SYM)模組名稱、行號、原因、能力、限制、運算式等

高頻錯誤代碼速查與解決方案

系統層級 ($2100~$21FF)

代碼訊息常見成因建議處理
$2108 (8456)Cannot locate IDAPI32.DLLBDE 未安裝、路徑未加入 PATH、版本不符重新安裝 BDE,確認 HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Database Engine 登錄
$2109 (8457)Cannot load IDAPI32.DLLDLL 損壞、版本衝突、相依 DLL 遺失檢查 idapi32.dll 版本,修復相依項
$210A (8458)Cannot load an IDAPI service library驅動程式 DLL 遺失(如 pdox32.dll, dbase32.dll)確認驅動程式目錄在 PATH 中
$210B (8459)Cannot create or open temporary file暫存目錄權限、磁碟滿、TEMP/TMP 環境變數錯誤檢查磁碟空間、權限、環境變數

資料完整性與鎖定 ($2600~$28FF)

代碼訊息常見成因建議處理
$2601 (9729)Key violation主鍵/唯一索引重複值檢查插入/修改資料的唯一性
$2605 (9733)Master record missing參考完整性:主表記錄不存在先新增主表記錄,或暫停檢查
$2606 (9734)Master has detail records嘗試刪除有明細的主記錄先刪除明細,或設定級聯刪除
$2801 (10241)Record locked by another user多人同時編輯同一記錄樂觀鎖定、縮短交易時間、使用者通知
$280F (10255)A deadlock was detected循環等待資源統一存取順序、縮短交易、設定逾時
$2813 (10259)Couldn't perform the edit because another user changed the record樂觀鎖定衝突重新讀取資料、合併變更、通知使用者

資源限制 ($2500~$25FF)

代碼訊息常見成因建議處理
$2501 (9473)Insufficient memory for this operation記憶體不足、大型查詢、BLOB 處理增加實體/虛擬記憶體、分批處理、關閉不用資料集
$2503 (9475)Insufficient disk space磁碟空間不足清理磁碟、移動暫存檔、擴充磁碟
$2506 (9478)Too many open cursors未關閉的 TQuery/TTable 過多確保 Close、使用 try..finally、增加 MaxCursors 設定
$250B (9483)Too many open tables同時開啟資料表超過限制調整 idapi32.cfg 的 MAX OPEN TABLES

查詢處理器錯誤 ($2E00~$2EFF) - 常見於 QBE/SQL

  • $2E08 (11784) Invalid expression:運算式語法錯誤,檢查欄位名、運算子、括號配對。
  • $2E28 (11816) Syntax error in expression:SQL/QBE 語法錯誤,對照 SQL 文法修正。
  • $2E73 (11891) QBE syntax error:QBE 範例表格式錯誤,檢查範例元素、運算子。
  • $2EB7 (11959) GROUP BY is required...:聚合與非聚合欄位混用時缺少 GROUP BY。
  • $2EB8 (11960) INSERT/UPDATE not supported on autoincrement:自動編號欄位不可手動指定值。

排查實務建議

  1. 記錄完整代碼:攔截 EDBEngineError,記錄 Errors[0].ErrorCode 與 Message。
  2. 查閱對照表:依代碼範圍定位類別,再精確比對訊息。
  3. 啟用 BDE 追蹤:使用 BDE Administrator → Configuration → Drivers → Trace 產生詳細日誌。
  4. 檢查環境一致性:開發/測試/生產機的 BDE 版本、驅動程式、idapi32.cfg 設定必須一致。
  5. 考慮移轉:BDE 已停止維護,新專案建議改用 FireDAC、dbExpress、ADO 或 ORM 框架。

結語

BDE 錯誤代碼體系雖然龐大,但掌握分類邏輯與高頻代碼,即可快速定位問題根因。隨著技術演進,建議逐步規劃資料存取層的現代化移轉,從根本上減少 BDE 相關風險。

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