1. ホーム
  2. postgresql

PostgreSQLデータベースエラーコードの説明

2022-02-07 03:04:39

PostgreSQLサーバからの全てのメッセージには、SQLの"SQLSTATE"コード規約に従った5文字のエラーコードが付与されています。どのようなエラー状態が発生したかを知る必要があるアプリケーションは、通常、テキストによるエラーメッセージを見るのではなく、エラーコードをテストする必要があります。これらのエラーコードはPostgreSQLのバージョン更新で簡単に変更されることはありませんし、エラーメッセージが地域化されても一般的に変更されることはありません。 PostgreSQLが生成するエラーコードの全てではありませんが、いくつかは標準SQLで定義されていることに注意してください。標準SQLで定義されていないいくつかのエラー状態は、私たちが考案したもの、もしくは他のデータベースから借用したものです。

規格では、エラーコードの最初の2文字がエラーのカテゴリーを示し、最後の3文字がそのカテゴリー内の具体的な状態を示している。そのため、特定のエラーコードを認識できないアプリケーションでも、エラーカテゴリーから何をすべきかを推測することができます。

表A-1にPostgreSQL 8.1で定義されている全てのエラーコードの一覧を示します。(いくつかは現時点では実際に使用されませんが、標準SQLで定義されています)。また、エラーカテゴリもここにリストアップされています。各エラーカテゴリには、最後の3文字が000のquot;standard"エラーコードがあります。

PL/pgSQLが各エラーコードに対して使用する条件名は、空白をアンダースコアに置き換える以外は、表に表示されている文言と同じです。例えば、コード22012「DIVISION BY ZERO」は、DIVISION_BY_ZEROという条件名を持っており、これは大文字でも小文字でも書くことができます。(PL/pgSQLは警告(エラーの反対)と条件名を認識しませんので、これらのカテゴリは00、01、02です)。

"""
Database return code
"""

{
    # 00 class Successful completion
    '00000': 'SUCCESSFUL COMPLETION',
    # 01 class Warning
    '01000': 'WARNING',
    '0100C': 'Dynamic results (DYNAMIC RESULT SETS RETURNED) were returned',
    '01008': 'WARNING, implicitly completing zero bits (IMPLICIT ZERO BIT PADDING)',
    '01003': 'Null value eliminated in set function (NULL VALUE ELIMINATED IN SET FUNCTION)',
    '01007': 'Permission not granted (PRIVILEGE NOT GRANTED)',
    '01006': 'Privilege not revoked (PRIVILEGE NOT REVOKED)',
    '01004': 'STRING DATA RIGHT TRUNCATION',
    '01P01': 'DEPRECATED FEATURE',
    # 02 class No data - this is also a warning class as required by the SQL standard
    '02000': 'NO DATA',
    '02001': 'NO ADDITIONAL DYNAMIC RESULT SETS RETURNED was returned',
    # 03 class SQL statement is not finished
    '03000': 'SQL STATEMENT NOT YET COMPLETE',
    # 08 class Connection exception
    '08000': 'CONNECTION EXCEPTION',
    '08003': 'Connection does not exist (CONNECTION DOES NOT EXIST)',
    '08006': 'Connection failed (CONNECTION FAILURE)',
    '08001': 'SQL client cannot establish SQL connection (SQLCLIENT UNABLE TO ESTABLISH SQLCONNECTION)',
    '08004': 'SQL SERVER REJECTED ESTABLISHMENT OF SQLCONNECTION',
    '08007': 'TRANSACTION RESOLUTION UNKNOWN',
    '08P01': 'PROTOCOL VIOLATION',
    # 09 class Trigger action listed
    '09000': 'TRIGGERED ACTION EXCEPTION',
    # 0A class Unsupported feature
    '0A000': 'FEATURE NOT SUPPORTED',
    # 0B class Illegal transaction initialization
    '0B000': 'INVALID TRANSACTION INITIATION',
    # 0F class Indicator exception
    '0F000': 'LOCATOR EXCEPTION',
    '0F001': 'INVALID LOCATOR SPECIFICATION',
    # 0L class Illegal assignor
    '0L000': 'INVALID GRANTOR',
    '0LP01': 'INVALID GRANT OPERATION',
    # 0P class Illegal role declaration
    '0P000': 'INVALID ROLE SPECIFICATION',
    # 21 class Potential violation
    '21000': 'Potential violation (CARDINALITY VIOLATION)',
    # 22 class Data exception
    '22000': 'DATA EXCEPTION',
    '2202E': 'ARRAY SUBSCRIPT ERROR',
    '22021': 'CHARACTER NOT IN PREPARED RANGE (CHARACTER NOT IN REPERTOIRE)',
    '22008': 'Date Time Field Overflow (DATETIME FIELD OVERFLOW)',
    '22012': 'Divide by zero (DIVISION BY ZERO)',
    '22005': 'ERROR IN ASSIGNMENT',
    '2200B': 'ESCAPE CHARACTER CONFLICT',
    '22022': 'INDICATOR OVERFLOW',
    '22015': 'internal field overflow (INTERVAL FIELD OVERFLOW)',
    '2201E': 'INVALID ARGUMENT FOR LOGARITHM',
    '2201F': 'Illegal parameter for exponential function (INVALID ARGUMENT FOR POWER FUNCTION)',
    '2201G': 'INVALID ARGUMENT FOR WIDTH BUCKET FUNCTION', '2201F': 'INVALID ARGUMENT FOR WIDTH BUCKET FUNCTION', '2201G': 'INVALID ARGUMENT FOR WIDTH BUCKET FUNCTION',
    '22018': 'Illegal character value for type conversion (INVALID CHARACTER VALUE FOR CAST)',
    '22007': 'Illegal datetime format (INVALID DATETIME FORMAT)',
    '22019': 'Illegal escape character (INVALID ESCAPE CHARACTER)',
    '2200D': 'illegal escape byte (INVALID ESCAPE OCTET)',
    '22025': 'Illegal escape sequence (INVALID ESCAPE SEQUENCE)',
    '22P06': 'NONSTANDARD USE OF ESCAPE CHARACTER',
    '22010': 'INVALID INDICATOR PARAMETER VALUE',
    '22020': 'INVALID LIMIT VALUE',
    '22023': 'INVALID PARAMETER VALUE',
    '2201B': 'Illegal regular expression (INVALID REGULAR EXPRESSION)',
    '22
    '25P01': 'No active SQL transaction (NO ACTIVE SQL TRANSACTION)',
    '25P02': 'In failed SQL transaction (IN FAILED SQL TRANSACTION)',
    # 26 class illegal SQL statement name
    '26000': 'INVALID SQL STATEMENT NAME',
    # 27 Class Triggered data change violation
    '27000': 'TRIGGERED DATA CHANGE VIOLATION',
    # 28 class Illegal authorization statement
    '28000': 'INVALID AUTHORIZATION SPECIFICATION',
    # 2B class Dependent priority descriptor still exists
    '2B000': 'DEPENDENT PRIVILEGE DESCRIPTORS STILL EXIST',
    '2BP01': 'Dependent object still exists (DEPENDENT OBJECTS STILL EXIST)',
    # 2D class Illegal transaction termination
    '2D000': 'INVALID TRANSACTION TERMINATION',
    # 2F class SQL procedure exception
    '2F000': 'SQL ROUTINE EXCEPTION',
    '2F005': 'Function executed without return statement (FUNCTION EXECUTED NO RETURN STATEMENT)',
    '2F002': 'Modifying SQL data is not allowed (MODIFYING SQL DATA NOT PERMITTED)',
    '2F003': 'Attempting to use forbidden SQL statement (PROHIBITED SQL STATEMENT ATTEMPTED)',
    '2F004': 'READING SQL DATA NOT PERMITTED',
    # 34 class illegal cursor name
    '34000': 'INVALID CURSOR NAME',
    # 38 class External procedure exception
    '38000': 'EXTERNAL ROUTINE EXCEPTION',
    '38001': 'CONTAINING SQL NOT PERMITTED',
    '38002': 'MODIFYING SQL DATA NOT PERMITTED',
    '38003': 'Attempting to use prohibited SQL statement (PROHIBITED SQL STATEMENT ATTEMPTED)',
    '38004': 'READING SQL DATA NOT PERMITTED',
    # 39 class External procedure call exception
    '39000': 'EXTERNAL ROUTINE INVOCATION EXCEPTION',
    '39001': 'An illegal SQLSTATE was returned (INVALID SQLSTATE RETURNED)',
    '39004': 'NULL VALUE NOT ALLOWED',
    '39P01': 'TRIGGER PROTOCOL VIOLATED',
    '39P02': 'SRF PROTOCOL VIOLATED',
    # 3B class Save point exception
    '3B000': 'SAVEPOINT EXCEPTION',
    '3B001': 'INVALID SAVEPOINT SPECIFICATION',
    # 3D class Illegal database name
    '3D000': 'Illegal database name (INVALID CATALOG NAME)',
    # 3F class Illegal schema name
    '3F000': 'Illegal schema name (INVALID SCHEMA NAME)',
    # 40 class transaction rollback
    '40000': 'TRANSACTION ROLLBACK',
    '40002': 'TRANSACTION INTEGRITY CONSTRAINT VIOLATION',
    '40001': 'Serialization failure (SERIALIZATION FAILURE)',
    '40003': 'Don't know if statement is finished (STATEMENT COMPLETION UNKNOWN)',
    '40P01': 'DEADLOCK DETECTED',
    # 42 class Syntax error or access rule violation
    '42000': 'Syntax error or access violation (SYNTAX ERROR OR ACCESS RULE VIOLATION)',
    '42601': 'Syntax error (SYNTAX ERROR)',
    '42501': 'Insufficient privileges (INSUFFICIENT PRIVILEGE)',
    '42846': 'Unable to perform type conversion (CANNOT COERCE)',
    '42803': 'Grouping error (GROUPING ERROR)',
    '42830': 'Illegal foreign key (INVALID FOREIGN KEY)',
    '42602': 'Illegal name (INVALID NAME)',
    '42622': 'Name is too long (NAME TOO LONG)',
    '42939': 'RESERVED NAME',
    '42804': 'Data type mismatch (DATATYPE MISMATCH)',
    '42P18': 'Pending data type (INDETERMINATE DATATYPE)',
    '42809': 'Incorrect object type (WRONG OBJECT TYPE)',
    '42703': 'Undefined field (UNDEFINED COLUMN)',
    '42883': 'Undefined function (UNDEFINED FUNCTION)',
    '42P01': 'UNDEFINED TABLE',
    '42P02': 'undefined parameter (UNDEFINED PARAMETER)',
    '42704': 'Undefined object (UNDEFINED OBJECT)',
    '42701': 'Duplicate field (DUPLICATE COLUMN)',
    '42P03': 'Duplicate cursor (DUPLICATE CURSOR)',
    '42P04': 'Duplicate database (DUPLICATE DATABASE))',
    '42723': 'Duplicate function (DUPLICATE FUNCTION)',
    '42P05': 'DUPLICATE PREPARED STATEMENT', '42P05': 'DUPLICATE PREPARED STATEMENT',
    '42P06': 'DUPLICATE SCHEMA',
    '42P07': 'DUPLICATE TABLE',
    '42712': 'Duplicate Alias (DUPLICATE ALIAS)',
    '42710': 'Duplicate object (DUPLICATE OBJECT)',
    '42702': 'Ambiguous field (AMBIGUOUS COLUMN)',
    '42725': 'fuzzy function (AMBIGUOUS FUNCTION)',
    '42P08': 'fuzzy parameter (AMBIGUOUS PARAMETER)',
    '42P09': 'Fuzzy alias (AMBIGUOUS ALIAS)',
    '42P10': 'ILLEGAL FIELD REFERENCE (INVALID COLUMN REFERENCE)',
    '42611': 'illegal field definition (INVALID COLUMN DEFINITION)',
    '42P11': 'Illegal cursor definition (INVALID CURSOR DEFINITION)',
    '42P12': 'Illegal database definition (INVALID DATABASE DEFINITION)',
    '42P13': 'Illegal function definition