| PostgreSQL 7.4 文檔 | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Fast Forward | Next | |
PostgreSQL 服務器發出的所有消息都賦予了五個字符 的錯誤代碼,這些代碼遵循 SQL 的 "SQLSTATE" 代碼的習慣。需要知道發生 了什麼錯誤條件的應用通常應該測試錯誤代碼,而不是查看文本錯誤信息。這些錯誤 代碼輕易不會隨著 PostgreSQL 的版本更新而修改, 並且一般也不會隨著錯誤信息的本地化而發生修改。
根據標準,錯誤代碼的頭兩個字符表示錯誤類別,而後三個字符表示在該 類別內特定的條件。因此,那些不能識別特定錯誤代碼的應用仍然可以從 錯誤類別中推斷要做什麼。
Table A-1 裡面列出了 PostgreSQL 7.4 定義的所有錯誤代碼。(有些實際上目前並沒有使用,但是 SQL 標準定義了。) 錯誤類別也列出在此。對于每個錯誤類別都有個"標準"的錯誤代碼, 它的最後三個字符是 000。這個代碼只用于那些落在該類別內, 但是沒有賦予任何更準確的代碼的錯誤條件
Table A-1. PostgreSQL 錯誤代碼
| 錯誤代碼 | 含義 |
|---|---|
| 00 類 | 成功完成 |
| 00000 | 成功完成 |
| 01 類 | 警告 |
| 01000 | 警告 |
| 0100C | 警告,返回了動態結果 |
| 01008 | 警告,隱含補齊了零比特位 |
| 01003 | 警告,在集合函數裡消除了空值 |
| 01004 | 警告,字串數據在右端截斷 |
| 02 類 | 沒有數據 --- 按照 SQL99 的要求,這也是警告類 |
| 02000 | 沒有數據 |
| 02001 | 返回了沒有附加動態結果集 |
| 03 類 | SQL 語句尚未結束 |
| 03000 | SQL 語句尚未結束 |
| 08 類 | 連接例外 |
| 08000 | 連接例外 |
| 08003 | 連接不存在 |
| 08006 | 連接失敗 |
| 08001 | SQL 客戶端不能建立 SQL 連接 |
| 08004 | SQL 服務器拒絕建立 SQL 連接 |
| 08007 | 未知的事務分辨率 |
| 08P01 | 違反協議 |
| 09 類 | 觸發器動作列外 |
| 09000 | 觸發的動作例外 |
| 0A 類 | 不支持特性 |
| 0A000 | 不支持此特性 |
| 0B 類 | 非法事務初始化 |
| 0B000 | 非法事務初始化 |
| 0F 類 | 指示器例外 |
| 0F000 | 指示器例外 |
| 0F001 | 非法的聲明 |
| 0L 類 | 非法賦權人 |
| 0L000 | 非法賦權人 |
| 0LP01 | 非法賦權操作 |
| 0P 類 | 非法角色聲明 |
| 0P000 | 非法角色聲明 |
| 21 類 | 勢違反 |
| 21000 | 勢違反 |
| 22 類 | 數據例外 |
| 22000 | 數據例外 |
| 2202E | 數組元素錯誤 |
| 22021 | 字符不在準備好的範圍內 |
| 22008 | 日期時間字段溢出 |
| 22012 | 被零除 |
| 22005 | 賦值中出錯 |
| 2200B | 逃逸字符衝突 |
| 22022 | 指示器溢出 |
| 22015 | 內部字段溢出 |
| 22018 | 類型轉換時非法的字符值 |
| 22007 | 非法日期時間格式 |
| 22019 | 非法的逃逸字符 |
| 2200D | 非法的逃逸字節 |
| 22025 | 非法逃逸序列 |
| 22010 | 非法指示器參數值 |
| 22020 | 非法限制值 |
| 22023 | 非法參數值 |
| 2201B | 非法正則表達式 |
| 22009 | 非法時區顯示值 |
| 2200C | 非法使用逃逸字符 |
| 2200G | 最相關類型不匹配 |
| 22004 | 不允許 NULL 值 |
| 22002 | NULL 只不能做指示器參數 |
| 22003 | 數字值超出範圍 |
| 22026 | 字串數據長度不匹配 |
| 22001 | 字串數據右邊被截斷 |
| 22011 | 抽取子字串錯誤 |
| 22027 | 截斷錯誤 |
| 22024 | 未結束的 C 字串 |
| 2200F | 零長度的字符串 |
| 22P01 | 浮點例外 |
| 22P02 | 非法文本表現形式 |
| 22P03 | 非法二進制表現形式 |
| 22P04 | 錯誤的 COPY 格式 |
| 22P05 | 不可翻譯字符 |
| 23 類 | 違反完整性約束 |
| 23000 | 違反完整性約束 |
| 23001 | 違反限制 |
| 23502 | 違反非空 |
| 23503 | 違反外鍵約束 |
| 23505 | 違反唯一約束 |
| 23514 | 違反檢查 |
| 24 類 | 非法遊標狀態 |
| 24000 | 非法遊標狀態 |
| 25 類 | 非法事務狀態 |
| 25000 | 非法事務狀態 |
| 25001 | 活躍的 SQL 狀態 |
| 25002 | 分支事務已經激活 |
| 25008 | 持有的遊標要求同樣的隔離級別 |
| 25003 | 對分支事務的不恰當的訪問方式 |
| 25004 | 對分支事務的不恰當的隔離級別 |
| 25005 | 分支事務沒有活躍的 SQL 事務 |
| 25006 | 只讀的 SQL 事務 |
| 25007 | 不支持混和的模式和數據語句 |
| 25P01 | 沒有活躍的 SQL 事務 |
| 25P02 | 在失敗的 SQL 事務中 |
| 26 類 | 非法 SQL 語句名 |
| 26000 | 非法 SQL 語句名 |
| 27 類 | 違反觸發的數據改變 |
| 27000 | 違反觸發的數據改變 |
| 28 類 | 非法授權聲明 |
| 28000 | 非法授權聲明 |
| 2B 類 | 依然存在依賴的優先級描述符 |
| 2B000 | 依然存在依賴的優先級描述符 |
| 2BP01 | 依賴性對象仍然存在 |
| 2D 類 | 非法的事務終止 |
| 2D000 | 非法的事務終止 |
| 2F 類 | SQL 過程例外 |
| 2F000 | SQL 過程例外 |
| 2F005 | 執行的函數沒有返回語句 |
| 2F002 | 不允許修改 SQL 數據 |
| 2F003 | 企圖使用禁止的 SQL 語句 |
| 2F004 | 不允許讀取 SQL 數據 |
| 34 類 | 非法遊標名 |
| 34000 | 非法遊標名 |
| 38 類 | 外部過程例外 |
| 38000 | 外部過程例外 |
| 38001 | 不允許包含的 SQL |
| 38002 | 不允許修改 SQL 數據 |
| 38003 | 企圖使用禁止的 SQL 語句 |
| 38004 | 不允許讀取 SQL 數據 |
| 39 類 | 外部過程調用例外 |
| 39000 | 外部過程調用例外 |
| 39001 | 返回了非法的 SQLSTATE |
| 39004 | 不允許空值 |
| 39P01 | 違反觸發器協議 |
| 39P02 | 違反SRF協議 |
| 3D 類 | 非法數據庫名 |
| 3D000 | 非法數據庫名 |
| 3F 類 | 非法模式名 |
| 3F000 | 非法模式名 |
| 40 類 | 事務回滾 |
| 40000 | 事務回滾 |
| 40002 | 違反完整性約束 |
| 40001 | 串行化失敗 |
| 40003 | 不知道語句是否結束 |
| 40P01 | 偵測到死鎖 |
| 42 類 | 語法錯誤或者違反訪問規則 |
| 42000 | 語法錯誤或者違反訪問規則 |
| 42601 | 語法錯誤 |
| 42501 | 權限不夠 |
| 42846 | 無法進行類型轉換 |
| 42803 | 分組錯誤 |
| 42830 | 非法的外鍵 |
| 42602 | 非法名字 |
| 42622 | 名字太長 |
| 42939 | 保留名字 |
| 42804 | 數據類型不匹配 |
| 42P18 | 未決的數據類型 |
| 42809 | 錯誤的對象類型 |
| 42703 | 未定義的字段 |
| 42883 | 未定義的函數 |
| 42P01 | 未定義的表 |
| 42P02 | 未定義的參數 |
| 42704 | 未定義對象 |
| 42701 | 重復的字段 |
| 42P03 | 重復的遊標 |
| 42P04 | 重復的數據庫 |
| 42723 | 重復的函數 |
| 42P05 | 重復的語句 |
| 42P06 | 重復的模式 |
| 42P07 | 重復的表 |
| 42712 | 重復的別名 |
| 42710 | 重復的對象 |
| 42702 | 模糊的字段 |
| 42725 | 模糊的函數 |
| 42P08 | 模糊的參數 |
| 42P09 | 模糊的別名 |
| 42P10 | 非法字段引用 |
| 42611 | 非法字段定義 |
| 42P11 | 非法遊標定義 |
| 42P12 | 非法的數據庫定義 |
| 42P13 | 非法函數定義 |
| 42P14 | 非法語句定義 |
| 42P15 | 非法模式定義 |
| 42P16 | 非法表定義 |
| 42P17 | 非法對象定義 |
| 44 類 | 違反 WITH CHECK 選項 |
| 44000 | 違反 WITH CHECK 選項 |
| 53 類 | 資源不夠 |
| 53000 | 資源不夠 |
| 53100 | 磁盤滿 |
| 53200 | 內存耗盡 |
| 53300 | 太多連接 |
| 54 類 | 超過程序限制 |
| 54000 | 超過程序限制 |
| 54001 | 語句太復雜 |
| 54011 | 太多字段 |
| 54023 | 參數太多 |
| 55 類 | 對象不在預先要求的狀態 |
| 55000 | 對象不在預先要求的狀態 |
| 55006 | 對象在使用中 |
| 55P02 | 無法修改運行時參數 |
| 57 類 | 操作者幹涉 |
| 57000 | 操作者幹涉 |
| 57014 | 查詢被取消 |
| 57P01 | 管理員關機 |
| 57P02 | 崩潰關機 |
| 57P03 | 現在無法連接 |
| 58 類 | 系統錯誤( PostgreSQL 自己內部的錯誤) |
| 58030 | IO 錯誤 |
| 58P01 | 未定義的文件 |
| 58P02 | 重復的文件 |
| F0 類 | 配置文件錯誤 |
| F0000 | 配置文件錯誤 |
| F0001 | 鎖文件存在 |
| XX 類 | 內部錯誤 |
| XX000 | 內部錯誤 |
| XX001 | 數據崩潰 |
| XX002 | 索引崩潰 |