Overview of ODBC Error Codes

SQLGetDiagRec or SQLGetDiagField returns SQLSTATE values as defined by X/Open 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 code 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 SQL92.

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
SQLNativeSql
SQLParamData
SQLPutData
SQLSetCursorName
01006 Privilege not revoked SQLExecDirect
SQLExecute
SQLParamData
01007 Privilege not granted SQLExecDirect
SQLExecute
SQLParamData
01S00 Invalid connection string attribute SQLBrowseConnect
SQLDriverConnect
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
SQLSetDescRec
SQLSetPos
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 does not exist 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
SQLExecute
SQLParamData
SQLPutData
22012 Division by zero SQLExecDirect 
SQLExecute
SQLExtendedFetch
SQLFetch
SQLFetchScroll
SQLGetData
SQLParamData
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:

SQLBulkOperations
SQLColAttribute

SQLColumnPrivileges
SQLColumns
SQLDescribeCol
SQLDescribeParam
SQLExecDirect
SQLExecute
SQLExtendedFetch
SQLFetch
SQLFetchScroll
SQLForeignKeys
SQLGetData
SQLGetTypeInfo
SQLMoreResults
SQLNumParams
SQLNumResultCols
SQLParamData
SQLPrepare
SQLPrimaryKeys
SQLProcedureColumns
SQLProcedures
SQLPutData
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

SQLSetConnectAttr

SQLSetPos

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
SQLBulkOperations
SQLCopyDesc
SQLDriverConnect

SQLEndTran
SQLFreeStmt
SQLGetConnectAttr
SQLGetEnvAttr
SQLGetStmtAttr
SQLParamData

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