PostgreSQL 數據庫錯誤代碼解釋

PostgreSQL 服務器發出的全部消息都賦予了五個字符 的錯誤代碼, 這些代碼遵循 SQL 的 "SQLSTATE" 代碼的習慣。須要知道發生了什麼錯誤條件的應用一般應該測試錯誤代碼, 而不是查看文本錯誤信息。這些錯誤 代碼輕易不會隨着 PostgreSQL 的版本更新而修改, 而且通常也不會隨着錯誤信息的本地化而發生修改。 請注意有些,但不是所有,PostgreSQL 生成的錯誤代碼是由 SQL 標準定義的; 有些標準沒有定義的錯誤條件是咱們發明的或者是從其它數據庫借來的。
根據標準,錯誤代碼的頭兩個字符表示錯誤類別,然後三個字符表示在該 類別內特定的條件。 所以,那些不能識別特定錯誤代碼的應用仍然能夠從錯誤類別中推斷要作什麼。
Table A-1  裏面列出了 PostgreSQL 8.1 定義的全部錯誤代碼。(有些實際上目前並無使用,可是 SQL 標準定義了。) 錯誤類別也列出在此。對於每一個錯誤類別都有個"標準"的錯誤代碼, 它的最後三個字符是 000。這個代碼只用於那些落在該類別內, 可是沒有賦予任何更準確的代碼的錯誤條件。
PL/pgSQL 用於每一個錯誤代碼的條件名和表中顯示的措辭相同, 只是用下劃線代替了空白。好比,代碼 22012,DIVISION BY ZERO, 它的條件名是 DIVISION_BY_ZERO。條件名能夠用大寫或者小寫來寫均可以。 (請注意 PL/pgSQL 並不識別警告,這一點和錯誤,條件名正相反; 那些類別是 00,01,和 02。)
代碼 含義 
00 類 成功完成 
00000 成功完成(SUCCESSFUL COMPLETION) 
01 類 警告 
01000 警告(WARNING) 
0100C 返回了動態結果(DYNAMIC RESULT SETS RETURNED) 
01008 警告,隱含補齊了零比特位(IMPLICIT ZERO BIT PADDING) 
01003 在集合函數裏消除了空值(NULL VALUE ELIMINATED IN SET FUNCTION) 
01007 沒有賦予權限(PRIVILEGE NOT GRANTED) 
01006 沒有撤銷權限(PRIVILEGE NOT REVOKED) 
01004 字串數據在右端截斷(STRING DATA RIGHT TRUNCATION) 
01P01 廢棄的特性(DEPRECATED FEATURE) 
02 類 沒有數據 — 按照 SQL 標準的要求,這也是警告類 
02000 沒有數據(NO DATA) 
02001 返回了沒有附加動態結果集(NO ADDITIONAL DYNAMIC RESULT SETS RETURNED) 
03 類 SQL 語句還沒有結束 
03000 SQL 語句還沒有結束(SQL STATEMENT NOT YET COMPLETE) 
08 類 鏈接例外 
08000 鏈接例外(CONNECTION EXCEPTION) 
08003 鏈接不存在(CONNECTION DOES NOT EXIST) 
08006 鏈接失敗(CONNECTION FAILURE) 
08001 SQL 客戶端不能創建 SQL 鏈接(SQLCLIENT UNABLE TO ESTABLISH SQLCONNECTION) 
08004 SQL 服務器拒絕創建 SQL 鏈接(SQLSERVER REJECTED ESTABLISHMENT OF SQLCONNECTION) 
08007 未知的事務解析(TRANSACTION RESOLUTION UNKNOWN) 
08P01 違反協議(PROTOCOL VIOLATION) 
09 類 觸發器動做列外 
09000 觸發的動做例外(TRIGGERED ACTION EXCEPTION) 
0A 類 不支持特性 
0A000 不支持此特性(FEATURE NOT SUPPORTED) 
0B 類 非法事務初始化 
0B000 非法事務初始化(INVALID TRANSACTION INITIATION) 
0F 類 指示器例外 
0F000 指示器例外(LOCATOR EXCEPTION) 
0F001 非法的定位器聲明(INVALID LOCATOR SPECIFICATION) 
0L 類 非法賦權人 
0L000 非法賦權人(INVALID GRANTOR) 
0LP01 非法賦權操做(INVALID GRANT OPERATION) 
0P 類 非法角色聲明 
0P000 非法角色聲明(INVALID ROLE SPECIFICATION) 
21 類 勢違反 
21000 勢違反(CARDINALITY VIOLATION) 
22 類 數據例外 
22000 數據例外(DATA EXCEPTION) 
2202E 數組下標錯誤(ARRAY SUBSCRIPT ERROR) 
22021 字符不在準備好的範圍內(CHARACTER NOT IN REPERTOIRE) 
22008 日期時間字段溢出(DATETIME FIELD OVERFLOW) 
22012 被零除(DIVISION BY ZERO) 
22005 賦值中出錯(ERROR IN ASSIGNMENT) 
2200B 逃逸字符衝突(ESCAPE CHARACTER CONFLICT) 
22022 指示器溢出(INDICATOR OVERFLOW) 
22015 內部字段溢出(INTERVAL FIELD OVERFLOW) 
2201E 對數運算的非法參數(INVALID ARGUMENT FOR LOGARITHM) 
2201F 指數函數的非法參數(INVALID ARGUMENT FOR POWER FUNCTION) 
2201G 寬桶函數的非法參數(INVALID ARGUMENT FOR WIDTH BUCKET FUNCTION) 
22018 類型轉換時非法的字符值(INVALID CHARACTER VALUE FOR CAST) 
22007 非法日期時間格式(INVALID DATETIME FORMAT) 
22019 非法的逃逸字符(INVALID ESCAPE CHARACTER) 
2200D 非法的逃逸字節(INVALID ESCAPE OCTET) 
22025 非法逃逸序列(INVALID ESCAPE SEQUENCE) 
22P06 非標準使用逃逸字符(NONSTANDARD USE OF ESCAPE CHARACTER) 
22010 非法指示器參數值(INVALID INDICATOR PARAMETER VALUE) 
22020 非法限制值(INVALID LIMIT VALUE) 
22023 非法參數值(INVALID PARAMETER VALUE) 
2201B 非法正則表達式(INVALID REGULAR EXPRESSION) 
22009 非法時區顯示值(INVALID TIME ZONE DISPLACEMENT VALUE) 
2200C 非法使用逃逸字符(INVALID USE OF ESCAPE CHARACTER) 
2200G 最相關類型不匹配(MOST SPECIFIC TYPE MISMATCH) 
22004 不容許 NULL 值(NULL VALUE NOT ALLOWED) 
22002 NULL 值不能作指示器參數(NULL VALUE NO INDICATOR PARAMETER) 
22003 數字值超出範圍(NUMERIC VALUE OUT OF RANGE) 
22026 字串數據長度不匹配(STRING DATA LENGTH MISMATCH) 
22001 字串數據右邊被截斷(STRING DATA RIGHT TRUNCATION) 
22011 抽取子字串錯誤(SUBSTRING ERROR) 
22027 截斷錯誤(TRIM ERROR) 
22024 未結束的 C 字串(UNTERMINATED C STRING) 
2200F 零長度的字符串(ZERO LENGTH CHARACTER STRING) 
22P01 浮點例外(FLOATING POINT EXCEPTION) 
22P02 非法文本表現形式(INVALID TEXT REPRESENTATION) 
22P03 非法二進制表現形式(INVALID BINARY REPRESENTATION) 
22P04 錯誤的 COPY 格式(BAD COPY FILE FORMAT) 
22P05 不可翻譯字符(UNTRANSLATABLE CHARACTER) 
23 類 違反完整性約束 
23000 違反完整性約束(INTEGRITY CONSTRAINT VIOLATION) 
23001 違反限制(RESTRICT VIOLATION) 
23502 違反非空(NOT NULL VIOLATION) 
23503 違反外鍵約束(FOREIGN KEY VIOLATION) 
23505 違反惟一約束(UNIQUE VIOLATION) 
23514 違反檢查(CHECK VIOLATION) 
24 類 非法遊標狀態 
24000 非法遊標狀態(INVALID CURSOR STATE) 
25 類 非法事務狀態 
25000 非法事務狀態(INVALID TRANSACTION STATE) 
25001 活躍的 SQL 狀態(ACTIVE SQL TRANSACTION) 
25002 分支事務已經激活(BRANCH TRANSACTION ALREADY ACTIVE) 
25008 持有的遊標要求一樣的隔離級別(HELD CURSOR REQUIRES SAME ISOLATION LEVEL) 
25003 對分支事務的不恰當的訪問方式(INAPPROPRIATE ACCESS MODE FOR BRANCH TRANSACTION) 
25004 對分支事務的不恰當的隔離級別(INAPPROPRIATE ISOLATION LEVEL FOR BRANCH TRANSACTION) 
25005 分支事務沒有活躍的 SQL 事務(NO ACTIVE SQL TRANSACTION FOR BRANCH TRANSACTION) 
25006 只讀的 SQL 事務(READ ONLY SQL TRANSACTION) 
25007 不支持混和的模式和數據語句(SCHEMA AND DATA STATEMENT MIXING NOT SUPPORTED) 
25P01 沒有活躍的 SQL 事務(NO ACTIVE SQL TRANSACTION) 
25P02 在失敗的 SQL 事務中(IN FAILED SQL TRANSACTION) 
26 類 非法 SQL 語句名 
26000 非法 SQL 語句名(INVALID SQL STATEMENT NAME) 
27 類 觸發的數據改變違規 
27000 觸發的數據改變違規(TRIGGERED DATA CHANGE VIOLATION) 
28 類 非法受權聲明 
28000 非法受權聲明(INVALID AUTHORIZATION SPECIFICATION) 
2B 類 依然存在依賴的優先級描述符 
2B000 依然存在依賴的優先級描述符(DEPENDENT PRIVILEGE DESCRIPTORS STILL EXIST) 
2BP01 依賴性對象仍然存在(DEPENDENT OBJECTS STILL EXIST) 
2D 類 非法的事務終止 
2D000 非法的事務終止(INVALID TRANSACTION TERMINATION) 
2F 類 SQL 過程例外 
2F000 SQL 過程例外(SQL ROUTINE EXCEPTION) 
2F005 執行的函數沒有返回語句(FUNCTION EXECUTED NO RETURN STATEMENT) 
2F002 不容許修改 SQL 數據(MODIFYING SQL DATA NOT PERMITTED) 
2F003 企圖使用禁止的 SQL 語句(PROHIBITED SQL STATEMENT ATTEMPTED) 
2F004 不容許讀取 SQL 數據(READING SQL DATA NOT PERMITTED) 
34 類 非法遊標名 
34000 非法遊標名(INVALID CURSOR NAME) 
38 類 外部過程例外 
38000 外部過程例外(EXTERNAL ROUTINE EXCEPTION) 
38001 不容許包含的 SQL (CONTAINING SQL NOT PERMITTED) 
38002 不容許修改 SQL 數據(MODIFYING SQL DATA NOT PERMITTED) 
38003 企圖使用禁止的 SQL 語句(PROHIBITED SQL STATEMENT ATTEMPTED) 
38004 不容許讀取 SQL 數據(READING SQL DATA NOT PERMITTED) 
39 類 外部過程調用例外 
39000 外部過程調用例外(EXTERNAL ROUTINE INVOCATION EXCEPTION) 
39001 返回了非法的 SQLSTATE(INVALID SQLSTATE RETURNED) 
39004 不容許空值(NULL VALUE NOT ALLOWED) 
39P01 違反觸發器協議(TRIGGER PROTOCOL VIOLATED) 
39P02 違反SRF協議(SRF PROTOCOL VIOLATED) 
3B 類 保存點例外 
3B000 保存點例外(SAVEPOINT EXCEPTION) 
3B001 無效的保存點聲明(INVALID SAVEPOINT SPECIFICATION) 
3D 類 非法數據庫名 
3D000 非法數據庫名(INVALID CATALOG NAME) 
3F 類 非法模式名 
3F000 非法模式名(INVALID SCHEMA NAME) 
40 類 事務回滾 
40000 事務回滾(TRANSACTION ROLLBACK) 
40002 違反事務完整性約束(TRANSACTION INTEGRITY CONSTRAINT VIOLATION) 
40001 串行化失敗(SERIALIZATION FAILURE) 
40003 不知道語句是否結束(STATEMENT COMPLETION UNKNOWN) 
40P01 偵測到死鎖(DEADLOCK DETECTED) 
42 類 語法錯誤或者違反訪問規則 
42000 語法錯誤或者違反訪問規則(SYNTAX ERROR OR ACCESS RULE VIOLATION) 
42601 語法錯誤(SYNTAX ERROR) 
42501 權限不夠(INSUFFICIENT PRIVILEGE) 
42846 沒法進行類型轉換(CANNOT COERCE) 
42803 分組錯誤(GROUPING ERROR) 
42830 非法的外鍵(INVALID FOREIGN KEY) 
42602 非法名字(INVALID NAME) 
42622 名字太長(NAME TOO LONG) 
42939 保留名字(RESERVED NAME) 
42804 數據類型不匹配(DATATYPE MISMATCH) 
42P18 未決的數據類型(INDETERMINATE DATATYPE) 
42809 錯誤的對象類型(WRONG OBJECT TYPE) 
42703 未定義的字段(UNDEFINED COLUMN) 
42883 未定義的函數(UNDEFINED FUNCTION) 
42P01 未定義的表(UNDEFINED TABLE) 
42P02 未定義的參數(UNDEFINED PARAMETER) 
42704 未定義對象(UNDEFINED OBJECT) 
42701 重複的字段(DUPLICATE COLUMN) 
42P03 重複的遊標(DUPLICATE CURSOR) 
42P04 重複的數據庫(DUPLICATE DATABASE)) 
42723 重複的函數(DUPLICATE FUNCTION) 
42P05 重複的準備好語句(DUPLICATE PREPARED STATEMENT) 
42P06 重複的模式(DUPLICATE SCHEMA) 
42P07 重複的表(DUPLICATE TABLE) 
42712 重複的別名(DUPLICATE ALIAS) 
42710 重複的對象(DUPLICATE OBJECT) 
42702 模糊的字段(AMBIGUOUS COLUMN) 
42725 模糊的函數(AMBIGUOUS FUNCTION) 
42P08 模糊的參數(AMBIGUOUS PARAMETER) 
42P09 模糊的別名(AMBIGUOUS ALIAS) 
42P10 非法字段引用(INVALID COLUMN REFERENCE) 
42611 非法字段定義(INVALID COLUMN DEFINITION) 
42P11 非法遊標定義(INVALID CURSOR DEFINITION) 
42P12 非法的數據庫定義(INVALID DATABASE DEFINITION) 
42P13 非法函數定義(INVALID FUNCTION DEFINITION) 
42P14 非法準備好語句定義(INVALID PREPARED STATEMENT DEFINITION) 
42P15 非法模式定義(INVALID SCHEMA DEFINITION) 
42P16 非法表定義(INVALID TABLE DEFINITION) 
42P17 非法對象定義(INVALID OBJECT DEFINITION) 
44 類 違反 WITH CHECK 選項 
44000 違反 WITH CHECK 選項(WITH CHECK OPTION VIOLATION) 
53 類 資源不夠 
53000 資源不夠(INSUFFICIENT RESOURCES) 
53100 磁盤滿(DISK FULL) 
53200 內存耗盡(OUT OF MEMORY) 
53300 太多鏈接(TOO MANY CONNECTIONS) 
54 類 超過程序限制 
54000 超過程序限制(PROGRAM LIMIT EXCEEDED) 
54001 語句太複雜(STATEMENT TOO COMPLEX) 
54011 太多字段(TOO MANY COLUMNS) 
54023 參數太多(TOO MANY ARGUMENTS) 
55 類 對象不在預先要求的狀態 
55000 對象不在預先要求的狀態(OBJECT NOT IN PREREQUISITE STATE) 
55006 對象在使用中(OBJECT IN USE) 
55P02 沒法修改運行時參數(CANT CHANGE RUNTIME PARAM) 
55P03 鎖不可得到(LOCK NOT AVAILABLE) 
57 類 操做者干涉 
57000 操做者干涉(OPERATOR INTERVENTION) 
57014 查詢被取消(QUERY CANCELED) 
57P01 管理員關機(ADMIN SHUTDOWN) 
57P02 崩潰關機(CRASH SHUTDOWN) 
57P03 如今沒法鏈接(CANNOT CONNECT NOW) 
58 類 系統錯誤( PostgreSQL 本身內部的錯誤) 
58030 IO 錯誤(IO ERROR) 
58P01 未定義的文件(UNDEFINED FILE) 
58P02 重複的文件(DUPLICATE FILE) 
F0 類 配置文件錯誤 
F0000 配置文件錯誤(CONFIG FILE ERROR) 
F0001 鎖文件存在(LOCK FILE EXISTS) 
P0 類 PL/pgSQL 錯誤 
P0000 PLPGSQL 錯誤(PLPGSQL ERROR) 
P0001 拋出例外(RAISE EXCEPTION) 
XX 類 內部錯誤 
XX000 內部錯誤(INTERNAL ERROR) 
XX001 數據損壞(DATA CORRUPTED) 
XX002 索引損壞(INDEX CORRUPTED)
相關文章
相關標籤/搜索