附录 A:ODBC 错误代码
本主题讨论 ODBC 3 的 SQLSTATE 值。x. 有关 ODBC 3 的详细信息。x SQLSTATE 值,请参阅 SQLSTATE 映射。
SQLGetDiagRec 或 SQLGetDiagField 返回开放组数据管理定义的 SQLSTATE 值:结构化查询语言 (SQL) 版本 2 (1995 年 3 月) 。 SQLSTATE 值是包含五个字符的字符串。 下表列出了驱动程序可为 SQLGetDiagRec 返回的 SQLSTATE 值。
为 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 | set 函数中已消除 NULL 值 | 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 | 日期/时间格式无效 | SQLBulkOperations SQLExecDirect SQLExecute SQLExtendedFetch SQLFetch SQLFetchScroll SQLGetData SQLParamData SQLPutData SQLSetPos |
22008 | 日期时间字段溢出 | 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 | 转义字符无效 | SQLExecDirect SQLExecute SQLPrepare |
22025 | 转义序列无效 | SQLExecDirect SQLExecute SQLPrepare |
22026 | 字符串数据,长度不匹配 | SQLParamData |
23000 | 完整性约束冲突 | 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 |
42000 | 语法错误或访问冲突 | 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 | 唯一性选项类型范围外 | 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 | SQL_HANDLE_ENV 上的驱动程序的 SQLAllocHandle 失败 | SQLBrowseConnect SQLConnect SQLDriverConnect |
IM005 | SQL_HANDLE_DBC 上的驱动程序的 SQLAllocHandle 失败 | 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 |