Приложение А. Коды ошибок ODBC
В этом разделе рассматриваются значения SQLSTATE для ODBC 3.x. Дополнительные сведения об ODBC 3.Значения x SQLSTATE см. в разделе "Сопоставления SQLSTATE".
SQLGetDiagRec или SQLGetDiagField возвращает значения SQLSTATE, как определено open Group Data Management: Структурированный язык запросов (SQL), версия 2 (март 1995 г.). Значения SQLSTATE — это строки, содержащие пять символов. В следующей таблице перечислены значения SQLSTATE, которые драйвер может возвращать для SQLGetDiagRec.
Значение строки символа, возвращаемое для SQLSTATE, состоит из значения класса двух символов, за которым следует значение подкласса с тремя символами. Значение класса "01" указывает предупреждение и сопровождается возвращаемым кодом SQL_SUCCESS_WITH_INFO. Значения классов, отличные от "01", за исключением класса "IM", указывают на ошибку и сопровождаются возвращаемым значением SQL_ERROR. Класс "IM" предназначен для предупреждений и ошибок, производных от реализации САМОГО ODBC. Значение подкласса "000" в любом классе указывает, что для этого SQLSTATE нет подкласса. Назначение значений класса и подклассов определяется SQL-92.
Заметка
Хотя успешное выполнение функции обычно указывается возвращаемым значением SQL_SUCCESS, SQLSTATE 00000 также указывает на успех.
SQLSTATE | Ошибка | Можно вернуть из |
---|---|---|
01000 | Общее предупреждение | Все функции ODBC, кроме следующих: Sqlerror SQLGetDiagField SQLGetDiagRec |
01001 | Конфликт операций курсора | SQLExecDirect SQLExecute SQLParamData Sqlsetpos |
01002 | Ошибка отключения | SQLDisconnect |
01003 | Значение NULL, устраненное в функции set | SQLExecDirect SQLExecute SQLParamData |
01004 | Строковые данные, усеченные по правому краю | 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 | Привилегии не отозваны | SQLExecDirect SQLExecute SQLParamData |
01007 | Привилегии не предоставлены | SQLExecDirect SQLExecute SQLParamData |
01S00 | Недопустимый атрибут строки подключения | SQLBrowseConnect SQLDriverConnec |
01S01 | Ошибка в строке | SQLBulkOperations Sqlextendedfetch Sqlsetpos |
01S02 | Изменено значение параметра | SQLBrowseConnect SQLConnect SQLDriverConnect SQLExecDirect SQLExecute SQLParamData SQLPrepare SQLSetConnectAttr SQLSetDescField SQLSetEnvAttr SQLSetStmtAttr |
01S06 | Попытка получить, прежде чем результирующий набор вернул первый набор строк | Sqlextendedfetch SQLFetchScroll |
01S07 | Дробное усечение | SQLBulkOperations SQLExecDirect SQLExecute Sqlextendedfetch SQLFetch SQLFetchScroll SQLGetData SQLParamData Sqlsetpos |
01S08 | Ошибка при сохранении dsN файла | SQLDriverConnect |
01S09 | Недопустимое ключевое слово | SQLDriverConnect |
07001 | Неправильное число параметров | SQLExecDirect SQLExecute |
07002 | Неправильное поле COUNT | SQLExecDirect SQLExecute SQLParamData |
07005 | Подготовленная инструкция не спецификация курсора | SQLColAttribute SQLDescribeCol |
07006 | Нарушение атрибута ограниченного типа данных | SQLBindCol SQLBindParameter SQLBulkOperations SQLExecDirect SQLExecute Sqlextendedfetch SQLFetch SQLFetchScroll SQLGetData SQLParamData SQLPutData Sqlsetpos |
07009 | Недопустимый индекс дескриптора | SQLBindCol SQLBindParameter SQLBulkOperations SQLColAttribute SQLDescribeCol SQLDescribeParam SQLFetch SQLFetchScroll SQLGetData SQLGetDescField SQLGetDescRec SQLParamData SQLSetDescField SQLSetDescRecSQLSetPos |
07S01 | Недопустимое использование параметра по умолчанию | SQLExecDirect SQLExecute SQLParamData SQLPutData |
08001 | Клиенту не удается установить подключение | SQLBrowseConnect SQLConnect SQLDriverConnect |
08002 | Имя подключения, используемое | SQLBrowseConnect SQLConnect SQLDriverConnect SQLSetConnectAttr |
08003 | Подключение не открыто | SQLAllocHandle SQLDisconnect SQLEndTran SQLGetConnectAttr SQLGetInfo SQLNativeSql SQLSetConnectAttr |
08004 | Сервер отклонил подключение | SQLBrowseConnect SQLConnect SQLDriverConnect |
08007 | Сбой подключения во время транзакции | SQLEndTran |
08S01 | Сбой связи | 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 | Список вставок значений не соответствует списку столбцов | SQLExecDirect SQLPrepare |
21S02 | Степень производной таблицы не соответствует списку столбцов | SQLBulkOperations SQLExecDirect SQLExecute SQLParamData SQLPrepare Sqlsetpos |
22001 | Строковые данные, усеченные по правому краю | SQLBulkOperations SQLExecDirect SQLExecute SQLFetch SQLFetchScroll SQLParamData SQLPutData SQLSetDescField Sqlsetpos |
22002 | Переменная индикатора, требуемая, но не указанная | SQLExecDirect SQLExecute Sqlextendedfetch SQLFetch SQLFetchScroll SQLGetData SQLParamData |
22003 | Числовое значение вне диапазона | SQLBulkOperations SQLExecDirect SQLExecute Sqlextendedfetch SQLFetch SQLFetchScroll SQLGetData SQLGetInfo SQLParamData SQLPutData Sqlsetpos |
22007 | Недопустимый формат datetime | SQLBulkOperations SQLExecDirect SQLExecute Sqlextendedfetch SQLFetch SQLFetchScroll SQLGetData SQLParamData SQLPutData Sqlsetpos |
22008 | Переполнение поля Datetime | SQLBulkOperations SQLExecDirect QLParamData SQLPutData |
22012 | Деление по нулю | SQLExecDirect SQLExecute Sqlextendedfetch SQLFetch SQLFetchScroll SQLGetData SQLPutData |
22015 | Переполнение поля интервала | SQLBulkOperations SQLExecDirect SQLExecute Sqlextendedfetch SQLFetch SQLFetchScroll SQLGetData SQLParamData SQLPutData Sqlsetpos |
22018 | Недопустимое значение символа для спецификации приведения | SQLBulkOperations SQLExecDirect SQLExecute Sqlextendedfetch SQLFetch SQLFetchScroll SQLGetData SQLParamData SQLPutData Sqlsetpos |
22019 | Недопустимый escape-символ | SQLExecDirect SQLExecute SQLPrepare |
22025 | Недопустимая последовательность escape-адресов | SQLExecDirect SQLExecute SQLPrepare |
22026 | Строковые данные, несовпадение длины | SQLParamData |
23 000 | Нарушение ограничений целостности | SQLBulkOperations SQLExecDirect SQLExecute SQLParamData Sqlsetpos |
24000 | Недопустимое состояние курсора | 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 | Недопустимое состояние транзакции | SQLDisconnect |
25S01 | Состояние транзакции | SQLEndTran |
25S02 | Транзакция по-прежнему активна | SQLEndTran |
25S03 | Откат транзакции | SQLEndTran |
28000 | Недопустимая спецификация авторизации | SQLBrowseConnect SQLConnect SQLDriverConnect |
34000 | Недопустимое имя курсора | SQLExecDirect SQLPrepare SQLSetCursorName |
3C000 | Повторяющееся имя курсора | SQLSetCursorName |
3D000 | Недопустимое имя каталога | SQLExecDirect SQLPrepare SQLSetConnectAttr |
3F000 | Недопустимое имя схемы | SQLExecDirect SQLPrepare |
40001 | Сбой сериализации | SQLBulkOperations SQLColumnPrivileges SQLColumns SQLEndTran SQLExecDirect SQLExecute SQLFetch SQLFetchScroll SQLForeignKeys SQLGetTypeInfo SQLMoreResults SQLParamData SQLPrimaryKeys SQLProcedureColumns SQLProcedures Sqlsetpos SQLSpecialColumns SQLStatistics SQLTablePrivileges SQLTables |
40002 | Нарушение ограничений целостности | SQLEndTran |
40003 | Неизвестное завершение инструкции | SQLBulkOperations SQLColumnPrivileges SQLColumns SQLExecDirect SQLExecute SQLFetch SQLFetchScroll SQLForeignKeys SQLGetTypeInfo SQLMoreResults SQLPrimaryKeys SQLProcedureColumns SQLProcedures SQLParamData Sqlsetpos SQLSpecialColumns SQLStatistics SQLTablePrivileges SQLTables |
42 000 | Синтаксическая ошибка или нарушение доступа | SQLBulkOperations SQLExecDirect SQLExecute SQLParamData SQLPrepare Sqlsetpos |
42S01 | Базовая таблица или представление уже существует | SQLExecDirect SQLPrepare |
42S02 | Базовая таблица или представление не найдено | SQLExecDirect SQLPrepare |
42S11 | Индекс уже существует | SQLExecDirect SQLPrepare |
42S12 | Индекс не найден | SQLExecDirect SQLPrepare |
42S21 | Столбец уже существует | SQLExecDirect SQLPrepare |
42S22 | Столбец не найден | SQLExecDirect SQLPrepare |
44000 | Нарушение параметра WITH CHECK OPTION | SQLBulkOperations SQLExecDirect SQLExecute SQLParamData Sqlsetpos |
HY000 | Общая ошибка | Все функции ODBC, кроме следующих: Sqlerror SQLGetDiagField SQLGetDiagRec |
HY001 | Ошибка выделения памяти | Все функции ODBC, кроме следующих: Sqlerror SQLGetDiagField SQLGetDiagRec |
HY003 | Недопустимый тип буфера приложения | SQLBindCol SQLBindParameter SQLGetData |
HY004 | Недопустимый тип данных SQL | SQLBindParameter SQLGetTypeInfo |
HY007 | Связанная инструкция не подготовлена | SQLCopyDesc SQLGetDescField SQLGetDescRec |
HY008 | Операция отменена | Все функции ODBC, которые можно обрабатывать асинхронно: 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 | Недопустимое использование указателя NULL | 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 | Ошибка последовательности функций | 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 | Атрибут не может быть задан сейчас | SQLBulkOperations SQLParamData QLSetPos SQLSetStmtAttr |
HY012 | Недопустимый код операции транзакции | SQLEndTran |
HY013 | Ошибка управления памятью | Все функции ODBC, кроме следующих: SQLGetDiagField SQLGetDiagRec |
HY014 | Ограничение на превышение количества дескрипторов | SQLAllocHandle |
HY015 | Имя курсора недоступно | SQLGetCursorName |
HY016 | Не удается изменить дескриптор строки реализации | SQLCopyDesc SQLSetDescField SQLSetDescRec |
HY017 | Недопустимое использование дескриптора автоматического выделенного дескриптора | SQLFreeHandle SQLSetStmtAttr |
HY018 | Отклоненный запрос на отмену сервера | SQLCancel |
HY019 | Неявные и не двоичные данные, отправляемые в фрагментах | SQLPutData |
HY020 | Попытка объединения значения NULL | SQLPutData |
HY021 | Несогласованные сведения о дескрипторе | SQLBindParameter SQLCopyDesc SQLGetDescField SQLSetDescField SQLSetDescRec |
HY024 | Недопустимое значение атрибута | SQLSetConnectAttr SQLSetEnvAttr SQLSetStmtAttr |
HY090 | Недопустимая длина строки или буфера | 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 | Недопустимый идентификатор поля дескриптора | SQLColAttribute SQLGetDescField SQLSetDescField |
HY092 | Недопустимый идентификатор атрибута или параметра | SQLAllocHandle QLBulkOperations SQLCopyDesc SQLDriverConnect SQLEndTran SQLFreeStmt SQLGetConnectAttr SQLGetEnvAttr QLParamData SQLSetConnectAttr SQLSetDescField SQLSetEnvAttr Sqlsetpos SQLSetStmtAttr |
HY095 | Тип функции вне диапазона | SQLGetFunctions |
HY096 | Недопустимый тип информации | SQLGetInfo |
HY097 | Тип столбца вне диапазона | SQLSpecialColumns |
HY098 | Тип области вне диапазона | SQLSpecialColumns |
HY099 | Тип, допускающий значение NULL, вне диапазона | SQLSpecialColumns |
HY100 | Тип параметра Uniqueness вне диапазона | SQLStatistics |
HY101 | Тип параметра точности вне диапазона | SQLStatistics |
HY103 | Недопустимый код извлечения | SQLDataSources SQLDrivers |
HY104 | Недопустимое значение точности или масштабирования | SQLBindParameter |
HY105 | Недопустимый тип параметра | SQLBindParameter SQLExecDirect SQLExecute SQLParamData SQLSetDescField |
HY106 | Выборка типа вне диапазона | Sqlextendedfetch SQLFetchScroll |
HY107 | Значение строки вне диапазона | Sqlextendedfetch SQLFetch SQLFetchScroll Sqlsetpos |
HY109 | Недопустимое положение курсора | SQLExecDirect SQLExecute SQLGetData SQLGetStmtAttr SQLNativeSql SQLParamData Sqlsetpos |
HY110 | Недопустимое завершение драйвера | SQLDriverConnect |
HY111 | Недопустимое значение закладки | Sqlextendedfetch SQLFetchScroll |
HYC00 | Необязательный компонент не реализован | 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 | Время ожидания истекло. | SQLBrowseConnect SQLBulkOperations SQLColumnPrivileges SQLColumns SQLConnect SQLDriverConnect SQLExecDirect SQLExecute Sqlextendedfetch SQLForeignKeys SQLGetTypeInfo SQLParamData SQLPrepare SQLPrimaryKeys SQLProcedureColumns SQLProcedures Sqlsetpos SQLSpecialColumns SQLStatistics SQLTablePrivileges SQLTables |
HYT01 | Время ожидания для подключения истекло | Все функции ODBC, кроме следующих: SQLDrivers SQLDataSources SQLGetEnvAttr SQLSetEnvAttr |
IM001 | Драйвер не поддерживает эту функцию | Все функции ODBC, кроме следующих: SQLAllocHandle SQLDataSources SQLDrivers SQLFreeHandle SQLGetFunctions |
IM002 | Имя источника данных не найдено и драйвер по умолчанию не указан | SQLBrowseConnect SQLConnect SQLDriverConnect |
IM003 | Не удалось загрузить указанный драйвер | SQLBrowseConnect SQLConnect SQLDriverConnect |
IM004 | Ошибка SQLAllocHandle драйвера на SQL_HANDLE_ENV | SQLBrowseConnect SQLConnect SQLDriverConnect |
IM005 | Сбой sqlAllocHandle драйвера на SQL_HANDLE_DBC | SQLBrowseConnect SQLConnect SQLDriverConnect |
IM006 | Ошибка SQLSetConnectAttr драйвера | SQLBrowseConnect SQLConnect SQLDriverConnect |
IM007 | Не указан источник данных или драйвер; Диалоговое окно запрещено | SQLDriverConnect |
IM008 | Сбой диалогового окна | SQLDriverConnect |
IM009 | Не удалось загрузить библиотеку DLL перевода | SQLBrowseConnect SQLConnect SQLDriverConnect SQLSetConnectAttr |
IM010 | Слишком длинное имя источника данных | SQLBrowseConnect SQLConnect SQLDriverConnect |
IM011 | Слишком длинное имя драйвера | SQLBrowseConnect SQLDriverConnect |
IM012 | Ошибка синтаксиса ключевого слова DRIVER | SQLBrowseConnect SQLDriverConnect |
IM013 | Ошибка файла трассировки | Все функции ODBC. |
IM014 | Недопустимое имя DSN файла | SQLDriverConnect |
IM015 | Поврежденный источник данных файла | SQLDriverConnect |