更新时间:2026-10-21 GMT+08:00
分享

错误码说明

本章节对驱动内部错误码进行说明,用于协助开发者排查定位问题。典型场景仅为常见问题场景的简化描述,不能涵盖所有可能触发该错误码的场景。若典型场景的描述与实际遇到的情况不符,请以英文错误码名称的含义和实际的报错信息为准。

连接错误码

连接错误码用于描述与数据库服务器连接相关的问题,包括网络通信、认证、连接状态等。可以在调用SQLGetDiagRec接口时,设置HandleType为SQL_HANDLE_DBC,并通过NativeErrorPtr参数获取连接错误码,具体请参见表1 连接错误码。

表1 连接错误码

错误码

错误码名称

典型场景

-3

CONN_ERROR_IGNORED

错误已忽略。

-2

CONN_TRUNCATED

数据被截断。

-1

CONN_OPTION_VALUE_CHANGED

选项值被自动调整。

101

CONNECTION_SERVER_NOT_REACHED

服务器地址不可达或端口未开放。

103

CONNECTION_MSG_TOO_LONG

SQL语句过长。

104

CONNECTION_COULD_NOT_SEND

无法发送数据到服务器,连接已断开。

105

CONNECTION_NO_SUCH_DATABASE

数据库不存在。

106

CONNECTION_BACKEND_CRAZY

服务器返回异常响应。

107

CONNECTION_NO_RESPONSE

服务器未响应。

108

CONNECTION_SERVER_REPORTED_SEVERITY_FATAL

服务器返回FATAL错误。

109

CONNECTION_COULD_NOT_RECEIVE

无法从服务器接收数据。

110

CONNECTION_SERVER_REPORTED_SEVERITY_ERROR

服务器返回ERROR消息。

112

CONNECTION_NEED_PASSWORD

需要重新认证。

113

CONNECTION_COMMUNICATION_ERROR

连接因网络问题中断。

114

CONNECTION_LIBPQ_STARTED_ERROR

等待连接建立阶段异常。

115

CONNECTION_LIBPQ_MADE_ERROR

连接已建立,等待发送数据阶段异常。

116

CONNECTION_LIBPQ_AWAITING_RESPONSE_ERROR

等待数据库响应阶段异常。

117

CONNECTION_LIBPQ_AUTH_OK_ERROR

已完成认证,等待后端启动阶段异常。

118

CONNECTION_LIBPQ_SETENV_ERROR

协商环境变量阶段异常。

119

CONNECTION_LIBPQ_SSL_STARTUP_ERROR

协商SSL连接阶段异常。

120

CONNECTION_LIBPQ_NEEDED_ERROR

建立物理连接阶段异常。

121

CONNECTION_LIBPQ_CHECK_WRITABLE_ERROR

检查会话是否可读写阶段异常。

122

CONNECTION_LIBPQ_CONSUME_ERROR

处理额外消息阶段异常。

123

CONNECTION_LIBPQ_CHECK_TARGET_ERROR

检查目标服务器属性阶段异常。

124

CONNECTION_LIBPQ_CHECK_STANDBY_ERROR

检查服务器是否处于备机模式阶段异常。

125

CONNECTION_LIBPQ_CHECK_CLUSTER_MAINNODE_ERROR

检查集群主节点阶段异常。

126

CONNECTION_LIBPQ_CHECK_PRIMARY_CLUSTER_ERROR

检查主备集群阶段异常。

127

CONNECTION_LIBPQ_SET_FINISH_CONNECT_SQL_ERROR

发送最后的SQL语句阶段异常。

131

CONNECTION_LIBPQ_UNKNOWN_CONN_ERROR

未知libpq阶段异常。

132

CONNECTION_LIBPQ_CONFIG_ERROR

libpq配置异常。

201

CONN_INIREAD_ERROR

连接配置文件解析失败。

202

CONN_OPENDB_ERROR

连接数据库失败,可能是认证失败、配置异常、网络不通或服务器未启动。

203

CONN_STMT_ALLOC_ERROR

达到最大语句数限制。

204

CONN_IN_USE

连接正被其他语句使用。

205

CONN_UNSUPPORTED_OPTION

驱动不支持该连接选项。

206

CONN_INVALID_ARGUMENT_NO

连接函数参数无效。

207

CONN_TRANSACT_IN_PROGRES

存在进行中的事务。

208

CONN_NO_MEMORY_ERROR

内存不足。

209

CONN_NOT_IMPLEMENTED_ERROR

功能未实现。

210

CONN_INVALID_AUTHENTICATION

认证失败,用户名或密码错误。

211

CONN_AUTH_TYPE_UNSUPPORTED

服务器不支持该认证方式。

212

CONN_UNABLE_TO_LOAD_DLL

无法加载驱动。

213

CONN_ILLEGAL_TRANSACT_STATE

事务状态不一致。

214

CONN_VALUE_OUT_OF_RANGE

参数值超出允许范围。

215

CONN_BUFFER_LENGTH_NEGATIVE

缓冲区长度为负值。

216

CONN_OPTION_NOT_FOR_THE_DRIVER

选项不适用于当前驱动。

217

CONN_EXEC_ERROR

连接执行SQL命令失败。

执行错误码

执行错误码用于描述SQL语句执行过程中的问题,包括语句语法错误、执行失败、参数绑定错误、游标状态错误等。可以在调用SQLGetDiagRec接口时,设置HandleType为SQL_HANDLE_STMT,并通过NativeErrorPtr参数获执行取错误码,具体请参见表2 执行错误码。

表2 执行错误码

错误码

错误码名称

典型场景

-6

STMT_ERROR_IN_ROW

取多行时某行转换出错,跳过该行继续。

-5

STMT_OPTION_VALUE_CHANGED

设置选项时驱动自动调整了值。

-4

STMT_ROW_VERSION_CHANGED

取出的行被其他事务修改。

-3

STMT_POS_BEFORE_RECORDSET

游标定位在结果集之前。

-2

STMT_TRUNCATED

数据被截断。

-1

STMT_INFO_ONLY

非错误,仅信息通知。

0

STMT_OK

操作成功。

1

STMT_EXEC_ERROR

SQL执行失败,可能是语法错误、违反约束等。

2

STMT_STATUS_ERROR

函数调用序列错误。

3

STMT_SEQUENCE_ERROR

前一操作未完成时发起新操作。

4

STMT_NO_MEMORY_ERROR

内存分配失败。

5

STMT_COLNUM_ERROR

列号无效,小于1或超过列数。

6

STMT_NO_STMTSTRING

执行时未设置SQL文本。

7

STMT_ERROR_TAKEN_FROM_BACKEND

后端返回错误,如违反约束。

8

STMT_INTERNAL_ERROR

驱动内部错误。

9

STMT_STILL_EXECUTING

异步操作仍在进行中。

10

STMT_NOT_IMPLEMENTED_ERROR

功能未实现。

11

STMT_BAD_PARAMETER_NUMBER_ERROR

绑定参数个数与占位符不匹配。

12

STMT_OPTION_OUT_OF_RANGE_ERROR

选项值超出有效范围。

13

STMT_INVALID_COLUMN_NUMBER_ERROR

列号无效。

14

STMT_RESTRICTED_DATA_TYPE_ERROR

不允许的数据类型转换。

15

STMT_INVALID_CURSOR_STATE_ERROR

游标未打开时取数,或取数后又继续取数。

16

STMT_CREATE_TABLE_ERROR

创建表执行失败。

17

STMT_NO_CURSOR_NAME

未设置游标名。

18

STMT_INVALID_CURSOR_NAME

游标名无效。

19

STMT_INVALID_ARGUMENT_NO

参数编号无效。

20

STMT_ROW_OUT_OF_RANGE

请求的行号超出范围。

21

STMT_OPERATION_CANCELLED

操作被取消。

22

STMT_INVALID_CURSOR_POSITION

游标定位无效。

23

STMT_VALUE_OUT_OF_RANGE

数值超出缓冲区范围。

24

STMT_OPERATION_INVALID

当前状态下不允许该操作。

25

STMT_PROGRAM_TYPE_OUT_OF_RANGE

SQL数据类型标识无效。

26

STMT_BAD_ERROR

通用错误。

27

STMT_INVALID_OPTION_IDENTIFIER

选项标识符不存在。

28

STMT_RETURN_NULL_WITHOUT_INDICATOR

值为NULL但无指示器。

29

STMT_INVALID_DESCRIPTOR_IDENTIFIER

描述符句柄无效。

30

STMT_OPTION_NOT_FOR_THE_DRIVER

选项不适用于驱动。

31

STMT_FETCH_OUT_OF_RANGE

fetch位置超出结果集。

32

STMT_COUNT_FIELD_INCORRECT

参数数量与占位符不匹配。

33

STMT_INVALID_NULL_ARG

不允许NULL的参数传入了NULL值。

34

STMT_NO_RESPONSE

服务器无响应。

35

STMT_COMMUNICATION_ERROR

通信链路故障。

36

STMT_STRING_CONVERSION_ERROR

字符集转换失败。

描述符错误码

描述符错误码用于描述描述符操作的相关问题。例如当调用SQLSetDescField、SQLGetDescField、SQLCopyDesc等接口设置或获取描述符字段信息失败时,会设置该错误码。可以在调用SQLGetDiagRec接口时,设置HandleType为SQL_HANDLE_DESC,并通过NativeErrorPtr参数获取描述符错误码,具体请参见表3 描述符错误码。

表3 描述符错误码

错误码

错误码名称

典型场景

-2

DESC_ERROR_IN_ROW

取多行时某行描述符操作出错。

-1

DESC_OPTION_VALUE_CHANGED

获取描述符字段时值被自动调整。

0

DESC_OK

描述符操作成功。

1

DESC_EXEC_ERROR

描述符操作失败。

2

DESC_STATUS_ERROR

描述符调用序列错误。

3

DESC_SEQUENCE_ERROR

前一描述符操作未完成时发起新操作。

4

DESC_NO_MEMORY_ERROR

描述符内存分配失败。

5

DESC_COLNUM_ERROR

描述符中列号无效。

6

DESC_NO_STMTSTRING

描述符关联的语句未设置SQL。

7

DESC_ERROR_TAKEN_FROM_BACKEND

后端错误记录到描述符。

8

DESC_INTERNAL_ERROR

描述符内部错误。

9

DESC_STILL_EXECUTING

异步操作时操作描述符。

10

DESC_NOT_IMPLEMENTED_ERROR

描述符功能未实现。

11

DESC_BAD_PARAMETER_NUMBER_ERROR

描述符参数数量与SQL不匹配。

12

DESC_OPTION_OUT_OF_RANGE_ERROR

描述符字段值超出范围。

13

DESC_INVALID_COLUMN_NUMBER_ERROR

描述符列号无效。

14

DESC_RESTRICTED_DATA_TYPE_ERROR

描述符数据类型不允许转换。

15

DESC_INVALID_CURSOR_STATE_ERROR

游标状态不允许描述符操作。

16

DESC_CREATE_TABLE_ERROR

通过描述符创建表失败。

17

DESC_NO_CURSOR_NAME

描述符关联语句未设置游标名。

18

DESC_INVALID_CURSOR_NAME

描述符游标名无效。

19

DESC_INVALID_ARGUMENT_NO

描述符字段编号无效。

20

DESC_ROW_OUT_OF_RANGE

描述符行号超出范围。

21

DESC_OPERATION_CANCELLED

描述符操作被取消。

22

DESC_INVALID_CURSOR_POSITION

描述符游标定位无效。

23

DESC_VALUE_OUT_OF_RANGE

描述符数据值超出范围。

24

DESC_OPERATION_INVALID

当前状态下描述符操作不允许。

25

DESC_PROGRAM_TYPE_OUT_OF_RANGE

描述符程序类型标识无效。

26

DESC_BAD_ERROR

描述符通用错误。

27

DESC_INVALID_OPTION_IDENTIFIER

描述符选项标识无效。

28

DESC_RETURN_NULL_WITHOUT_INDICATOR

描述符返回NULL但无指示器。

29

DESC_INVALID_DESCRIPTOR_IDENTIFIER

描述符句柄无效或已释放。

30

DESC_OPTION_NOT_FOR_THE_DRIVER

描述符选项不适用驱动。

31

DESC_FETCH_OUT_OF_RANGE

描述符fetch位置超出范围。

32

DESC_COUNT_FIELD_INCORRECT

描述符计数字段与实际不匹配。

相关文档