Appendix A: ODBC Error Codes
This topic discusses SQLSTATE values for ODBC 3.x. For more information on ODBC 3.x SQLSTATE values, see SQLSTATE Mappings.
SQLGetDiagRec or SQLGetDiagField returns SQLSTATE values as defined by Open Group Data Management: Structured Query Language (SQL), Version 2 (March 1995). SQLSTATE values are strings that contain five characters. The following table lists SQLSTATE values that a driver can return for SQLGetDiagRec.
The character string value returned for an SQLSTATE consists of a two-character class value followed by a three-character subclass value. A class value of "01" indicates a warning and is accompanied by a return code of SQL_SUCCESS_WITH_INFO. Class values other than "01," except for the class "IM," indicate an error and are accompanied by a return value of SQL_ERROR. The class "IM" is specific to warnings and errors that derive from the implementation of ODBC itself. The subclass value "000" in any class indicates that there is no subclass for that SQLSTATE. The assignment of class and subclass values is defined by SQL-92.
Note
Although successful execution of a function is normally indicated by a return value of SQL_SUCCESS, the SQLSTATE 00000 also indicates success.
SQLSTATE | Error | Can be returned from |
---|---|---|
01000 | General warning | All ODBC functions except: SQLError SQLGetDiagField SQLGetDiagRec |
01001 | Cursor operation conflict | SQLExecDirect SQLExecute SQLParamData SQLSetPos |
01002 | Disconnect error | SQLDisconnect |
01003 | NULL value eliminated in set function | SQLExecDirect SQLExecute SQLParamData |
01004 | String data, right-truncated | SQLBrowseConnect SQLBulkOperations SQLColAttribute SQLDataSources SQLDescribeCol SQLDriverConnect SQLDrivers SQLExecDirect SQLExecute SQLExtendedFetch SQLFetch SQLFetchScroll SQLGetConnectAttr SQLGetCursorName SQLGetData SQLGetDescField SQLGetDescRec SQLGetEnvAttr SQLGetInfo SQLGetStmtAttr SQLNative Sql SQLParamData SQLPutData SQLSetCursorName |
01006 | Privilege not revoked | SQLExecDirect SQLExecute SQLParamData |
01007 | Privilege not granted | SQLExecDirect SQLExecute SQLParamData |
01S00 | Invalid connection string attribute | SQLBrowseConnect SQLDriverConnec |
01S01 | Error in row | SQLBulkOperations SQLExtendedFetch SQLSetPos |
01S02 | Option value changed | SQLBrowseConnect SQLConnect SQLDriverConnect SQLExecDirect SQLExecute SQLParamData SQLPrepare SQLSetConnectAttr SQLSetDescField SQLSetEnvAttr SQLSetStmtAttr |
01S06 | Attempt to fetch before the result set returned the first rowset | SQLExtendedFetch SQLFetchScroll |
01S07 | Fractional truncation | SQLBulkOperations SQLExecDirect SQLExecute SQLExtendedFetch SQLFetch SQLFetchScroll SQLGetData SQLParamData SQLSetPos |
01S08 | Error saving File DSN | SQLDriverConnect |
01S09 | Invalid keyword | SQLDriverConnect |
07001 | Wrong number of parameters | SQLExecDirect SQLExecute |
07002 | COUNT field incorrect | SQLExecDirect SQLExecute SQLParamData |
07005 | Prepared statement not a cursor-specification | SQLColAttribute SQLDescribeCol |
07006 | Restricted data type attribute violation | SQLBindCol SQLBindParameter SQLBulkOperations SQLExecDirect SQLExecute SQLExtendedFetch SQLFetch SQLFetchScroll SQLGetData SQLParamData SQLPutData SQLSetPos |
07009 | Invalid descriptor index | SQLBindCol SQLBindParameter SQLBulkOperations SQLColAttribute SQLDescribeCol SQLDescribeParam SQLFetch SQLFetchScroll SQLGetData SQLGetDescField SQLGetDescRec SQLParamData SQLSetDescField SQLSetDescRecSQLSetPos |
07S01 | Invalid use of default parameter | SQLExecDirect SQLExecute SQLParamData SQLPutData |
08001 | Client unable to establish connection | SQLBrowseConnect SQLConnect SQLDriverConnect |
08002 | Connection name in use | SQLBrowseConnect SQLConnect SQLDriverConnect SQLSetConnectAttr |
08003 | Connection not open | SQLAllocHandle SQLDisconnect SQLEndTran SQLGetConnectAttr SQLGetInfo SQLNativeSql SQLSetConnectAttr |
08004 | Server rejected the connection | SQLBrowseConnect SQLConnect SQLDriverConnect |
08007 | Connection failure during transaction | SQLEndTran |
08S01 | Communication link failure | SQLBrowseConnect SQLColumnPrivileges SQLColumns SQLConnect SQLCopyDesc SQLDescribeCol SQLDescribeParam SQLDriverConnect SQLExecDirect SQLExecute SQLExtendedFetch SQLFetch SQLFetchScroll SQLForeignKeys SQLGetConnectAttr SQLGetData SQLGetDescField SQLGetDescRec SQLGetFunctions SQLGetInfo SQLGetTypeInfo SQLMoreResults SQLNativeSql SQLNumParams SQLNumResultCols SQLParamData SQLPrepare SQLPrimaryKeys SQLProcedureColumns SQLProcedures SQLPutData SQLSetConnectAttr SQLSetDescField SQLSetDescRec SQLSetEnvAttr SQLSetStmtAttr SQLSpecialColumns SQLStatistics SQLTablePrivileges SQLTables |
21S01 | Insert value list does not match column list | SQLExecDirect SQLPrepare |
21S02 | Degree of derived table does not match column list | SQLBulkOperations SQLExecDirect SQLExecute SQLParamData SQLPrepare SQLSetPos |
22001 | String data, right-truncated | SQLBulkOperations SQLExecDirect SQLExecute SQLFetch SQLFetchScroll SQLParamData SQLPutData SQLSetDescField SQLSetPos |
22002 | Indicator variable required but not supplied | SQLExecDirect SQLExecute SQLExtendedFetch SQLFetch SQLFetchScroll SQLGetData SQLParamData |
22003 | Numeric value out of range | SQLBulkOperations SQLExecDirect SQLExecute SQLExtendedFetch SQLFetch SQLFetchScroll SQLGetData SQLGetInfo SQLParamData SQLPutData SQLSetPos |
22007 | Invalid datetime format | SQLBulkOperations SQLExecDirect SQLExecute SQLExtendedFetch SQLFetch SQLFetchScroll SQLGetData SQLParamData SQLPutData SQLSetPos |
22008 | Datetime field overflow | SQLBulkOperations SQLExecDirect QLParamData SQLPutData |
22012 | Division by zero | SQLExecDirect SQLExecute SQLExtendedFetch SQLFetch SQLFetchScroll SQLGetData SQLPutData |
22015 | Interval field overflow | SQLBulkOperations SQLExecDirect SQLExecute SQLExtendedFetch SQLFetch SQLFetchScroll SQLGetData SQLParamData SQLPutData SQLSetPos |
22018 | Invalid character value for cast specification | SQLBulkOperations SQLExecDirect SQLExecute SQLExtendedFetch SQLFetch SQLFetchScroll SQLGetData SQLParamData SQLPutData SQLSetPos |
22019 | Invalid escape character | SQLExecDirect SQLExecute SQLPrepare |
22025 | Invalid escape sequence | SQLExecDirect SQLExecute SQLPrepare |
22026 | String data, length mismatch | SQLParamData |
23000 | Integrity constraint violation | SQLBulkOperations SQLExecDirect SQLExecute SQLParamData SQLSetPos |
24000 | Invalid cursor state | SQLBulkOperations SQLCloseCursor SQLColumnPrivileges SQLColumns SQLExecDirect SQLExecute SQLExtendedFetch SQLFetch SQLFetchScroll SQLForeignKeys SQLGetData SQLGetStmtAttr SQLGetTypeInfo SQLNativeSql SQLPrepare SQLPrimaryKeys SQLProcedureColumns SQLProcedures SQLSetConnectAttr SQLSetCursorName SQLSetPos SQLSetStmtAttr SQLSpecialColumns SQLStatistics SQLTablePrivileges SQLTables |
25000 | Invalid transaction state | SQLDisconnect |
25S01 | Transaction state | SQLEndTran |
25S02 | Transaction is still active | SQLEndTran |
25S03 | Transaction is rolled back | SQLEndTran |
28000 | Invalid authorization specification | SQLBrowseConnect SQLConnect SQLDriverConnect |
34000 | Invalid cursor name | SQLExecDirect SQLPrepare SQLSetCursorName |
3C000 | Duplicate cursor name | SQLSetCursorName |
3D000 | Invalid catalog name | SQLExecDirect SQLPrepare SQLSetConnectAttr |
3F000 | Invalid schema name | SQLExecDirect SQLPrepare |
40001 | Serialization failure | SQLBulkOperations SQLColumnPrivileges SQLColumns SQLEndTran SQLExecDirect SQLExecute SQLFetch SQLFetchScroll SQLForeignKeys SQLGetTypeInfo SQLMoreResults SQLParamData SQLPrimaryKeys SQLProcedureColumns SQLProcedures SQLSetPos SQLSpecialColumns SQLStatistics SQLTablePrivileges SQLTables |
40002 | Integrity constraint violation | SQLEndTran |
40003 | Statement completion unknown | SQLBulkOperations SQLColumnPrivileges SQLColumns SQLExecDirect SQLExecute SQLFetch SQLFetchScroll SQLForeignKeys SQLGetTypeInfo SQLMoreResults SQLPrimaryKeys SQLProcedureColumns SQLProcedures SQLParamData SQLSetPos SQLSpecialColumns SQLStatistics SQLTablePrivileges SQLTables |
42000 | Syntax error or access violation | SQLBulkOperations SQLExecDirect SQLExecute SQLParamData SQLPrepare SQLSetPos |
42S01 | Base table or view already exists | SQLExecDirect SQLPrepare |
42S02 | Base table or view not found | SQLExecDirect SQLPrepare |
42S11 | Index already exists | SQLExecDirect SQLPrepare |
42S12 | Index not found | SQLExecDirect SQLPrepare |
42S21 | Column already exists | SQLExecDirect SQLPrepare |
42S22 | Column not found | SQLExecDirect SQLPrepare |
44000 | WITH CHECK OPTION violation | SQLBulkOperations SQLExecDirect SQLExecute SQLParamData SQLSetPos |
HY000 | General error | All ODBC functions except: SQLError SQLGetDiagField SQLGetDiagRec |
HY001 | Memory allocation error | All ODBC functions except: SQLError SQLGetDiagField SQLGetDiagRec |
HY003 | Invalid application buffer type | SQLBindCol SQLBindParameter SQLGetData |
HY004 | Invalid SQL data type | SQLBindParameter SQLGetTypeInfo |
HY007 | Associated statement is not prepared | SQLCopyDesc SQLGetDescField SQLGetDescRec |
HY008 | Operation canceled | All ODBC functions that can be processed asynchronously: SQLBrowseConnect SQLBulkOperations SQLColAttribute SQLColumnPrivileges SQLColumns SQLConnect SQLDescribeCol SQLDescribeParam SQLDisconnect SQLDriverConnect SQLEndTran SQLExecDirect SQLExecute SQLExtendedFetch SQLFetch SQLFetchScroll SQLForeignKeys SQLGetData SQLGetTypeInfo SQLMoreResults SQLNumParams SQLNumResultCols SQLParamData SQLPrepare SQLPrimaryKeys SQLProcedureColumns SQLProcedures SQLPutData SQLSetConnectAttr SQLSetPos SQLSpecialColumns SQLStatistics SQLTablePrivileges SQLTables |
HY009 | Invalid use of null pointer | SQLAllocHandle SQLBindParameter SQLBulkOperations SQLColumnPrivileges SQLColumns SQLExecDirect SQLForeignKeys SQLGetCursorName SQLGetData SQLGetFunctions SQLNativeSql SQLPrepare SQLPrimaryKeys SQLProcedureColumns SQLProcedures SQLPutData SQLSetConnectAttr SQLSetCursorName SQLSetEnvAttr SQLSetStmtAttr SQLSpecialColumns SQLStatistics SQLTablePrivileges SQLTables |
HY010 | Function sequence error | SQLAllocHandle SQLBindCol SQLBindParameter SQLBulkOperations SQLCloseCursor SQLColAttribute SQLColumnPrivileges SQLColumns SQLCopyDesc SQLDescribeCol SQLDescribeParam SQLDisconnect SQLEndTran SQLExecDirect SQLExecute SQLExtendedFetch SQLFetch SQLFetchScroll SQLForeignKeys SQLFreeHandle SQLFreeStmt SQLGetConnectAttr SQLGetCursorName SQLGetData SQLGetDescField SQLGetDescRec SQLGetFunctions SQLGetStmtAttr SQLGetTypeInfo SQLMoreResults SQLNumParams SQLNumResultCols SQLParamData SQLPrepare SQLPrimaryKeys SQLProcedureColumns SQLProcedures SQLPutData SQLRowCount SQLSetConnectAttr SQLSetCursorName SQLSetDescField SQLSetEnvAttr SQLSetDescRec SQLSetPos SQLSetStmtAttr SQLSpecialColumns SQLStatistics SQLTablePrivileges SQLTables |
HY011 | Attribute cannot be set now | SQLBulkOperations SQLParamData QLSetPos SQLSetStmtAttr |
HY012 | Invalid transaction operation code | SQLEndTran |
HY013 | Memory management error | All ODBC functions except: SQLGetDiagField SQLGetDiagRec |
HY014 | Limit on the number of handles exceeded | SQLAllocHandle |
HY015 | No cursor name available | SQLGetCursorName |
HY016 | Cannot modify an implementation row descriptor | SQLCopyDesc SQLSetDescField SQLSetDescRec |
HY017 | Invalid use of an automatically allocated descriptor handle | SQLFreeHandle SQLSetStmtAttr |
HY018 | Server declined cancel request | SQLCancel |
HY019 | Non-character and non-binary data sent in pieces | SQLPutData |
HY020 | Attempt to concatenate a null value | SQLPutData |
HY021 | Inconsistent descriptor information | SQLBindParameter SQLCopyDesc SQLGetDescField SQLSetDescField SQLSetDescRec |
HY024 | Invalid attribute value | SQLSetConnectAttr SQLSetEnvAttr SQLSetStmtAttr |
HY090 | Invalid string or buffer length | SQLBindCol SQLBindParameter SQLBrowseConnect SQLBulkOperations SQLColAttribute SQLColumnPrivileges SQLColumns SQLConnect SQLDataSources SQLDescribeCol SQLDriverConnect SQLDrivers SQLExecDirect SQLExecute SQLFetch SQLFetchScroll SQLForeignKeys SQLGetConnectAttr SQLGetCursorName SQLGetData SQLGetDescField SQLGetInfo SQLGetStmtAttr SQLNativeSql SQLParamData SQLPrepare SQLPrimaryKeys SQLProcedureColumns SQLProcedures SQLPutData SQLSetConnectAttr SQLSetCursorName SQLSetDescField SQLSetDescRec SQLSetEnvAttr SQLSetStmtAttr SQLSetPos SQLSpecialColumns SQLStatistics SQLTablePrivileges SQLTables |
HY091 | Invalid descriptor field identifier | SQLColAttribute SQLGetDescField SQLSetDescField |
HY092 | Invalid attribute/option identifier | SQLAllocHandle QLBulkOperations SQLCopyDesc SQLDriverConnect SQLEndTran SQLFreeStmt SQLGetConnectAttr SQLGetEnvAttr QLParamData SQLSetConnectAttr SQLSetDescField SQLSetEnvAttr SQLSetPos SQLSetStmtAttr |
HY095 | Function type out of range | SQLGetFunctions |
HY096 | Invalid information type | SQLGetInfo |
HY097 | Column type out of range | SQLSpecialColumns |
HY098 | Scope type out of range | SQLSpecialColumns |
HY099 | Nullable type out of range | SQLSpecialColumns |
HY100 | Uniqueness option type out of range | SQLStatistics |
HY101 | Accuracy option type out of range | SQLStatistics |
HY103 | Invalid retrieval code | SQLDataSources SQLDrivers |
HY104 | Invalid precision or scale value | SQLBindParameter |
HY105 | Invalid parameter type | SQLBindParameter SQLExecDirect SQLExecute SQLParamData SQLSetDescField |
HY106 | Fetch type out of range | SQLExtendedFetch SQLFetchScroll |
HY107 | Row value out of range | SQLExtendedFetch SQLFetch SQLFetchScroll SQLSetPos |
HY109 | Invalid cursor position | SQLExecDirect SQLExecute SQLGetData SQLGetStmtAttr SQLNativeSql SQLParamData SQLSetPos |
HY110 | Invalid driver completion | SQLDriverConnect |
HY111 | Invalid bookmark value | SQLExtendedFetch SQLFetchScroll |
HYC00 | Optional feature not implemented | SQLBindCol SQLBindParameter SQLBulkOperations SQLColAttribute SQLColumnPrivileges SQLColumns SQLDriverConnect SQLEndTran SQLExecDirect SQLExecute SQLExtendedFetch SQLFetch SQLFetchScroll SQLForeignKeys SQLGetConnectAttr SQLGetData SQLGetEnvAttr SQLGetInfo SQLGetStmtAttr SQLGetTypeInfo SQLParamData SQLPrepare SQLPrimaryKeys SQLProcedureColumns SQLProcedures SQLSetConnectAttr SQLSetEnvAttr SQLSetPos SQLSetStmtAttr SQLSpecialColumns SQLStatistics SQLTablePrivileges SQLTables |
HYT00 | Timeout expired | SQLBrowseConnect SQLBulkOperations SQLColumnPrivileges SQLColumns SQLConnect SQLDriverConnect SQLExecDirect SQLExecute SQLExtendedFetch SQLForeignKeys SQLGetTypeInfo SQLParamData SQLPrepare SQLPrimaryKeys SQLProcedureColumns SQLProcedures SQLSetPos SQLSpecialColumns SQLStatistics SQLTablePrivileges SQLTables |
HYT01 | Connection timeout expired | All ODBC functions except: SQLDrivers SQLDataSources SQLGetEnvAttr SQLSetEnvAttr |
IM001 | Driver does not support this function | All ODBC functions except: SQLAllocHandle SQLDataSources SQLDrivers SQLFreeHandle SQLGetFunctions |
IM002 | Data source name not found and no default driver specified | SQLBrowseConnect SQLConnect SQLDriverConnect |
IM003 | Specified driver could not be loaded | SQLBrowseConnect SQLConnect SQLDriverConnect |
IM004 | Driver's SQLAllocHandle on SQL_HANDLE_ENV failed | SQLBrowseConnect SQLConnect SQLDriverConnect |
IM005 | Driver's SQLAllocHandle on SQL_HANDLE_DBC failed | SQLBrowseConnect SQLConnect SQLDriverConnect |
IM006 | Driver's SQLSetConnectAttr failed | SQLBrowseConnect SQLConnect SQLDriverConnect |
IM007 | No data source or driver specified; dialog prohibited | SQLDriverConnect |
IM008 | Dialog failed | SQLDriverConnect |
IM009 | Unable to load translation DLL | SQLBrowseConnect SQLConnect SQLDriverConnect SQLSetConnectAttr |
IM010 | Data source name too long | SQLBrowseConnect SQLConnect SQLDriverConnect |
IM011 | Driver name too long | SQLBrowseConnect SQLDriverConnect |
IM012 | DRIVER keyword syntax error | SQLBrowseConnect SQLDriverConnect |
IM013 | Trace file error | All ODBC functions. |
IM014 | Invalid name of File DSN | SQLDriverConnect |
IM015 | Corrupt file data source | SQLDriverConnect |