1

我在尝试运行 Informix CDC api 时遇到错误。

  1. 我将代码https://www.ibm.com/support/knowledgecenter/SSGU8G_11.50.0/com.ibm.cdc.doc/ids_cdc_060.htm复制 到 cdcapi_INFORMIX.ec

  2. 作为 informix 用户登录运行,我收到错误 CDC_ERRORCODE = CDC_E_APIVERS 我在编译程序时收到了一些警告,但它编译成程序 CDCEXE。但似乎不起作用。谁能给我一些指示

check_version csdk 当前安装版本:3.50.FC5

ifx_getversion dmi IBM/Informix-Client SDK 版本 3.50.FC5

ifx_getversion esql IBM/Informix-Client SDK 版本 3.50.FC5 IBM/Informix 嵌入式 SQL for C 版本 3.50.FC5 版权所有 (C) 1991-2009 IBM

esql -g -static -o CDCEXE cdcapi_INFORMIX.ec /opt/inf/sdk/lib/dmi/libdmi.a “cdcapi_INFORMIX.ec”,第 492 行:警告 #2223-D:函数“ldlong”隐式声明 c_int8.data [ 0] = ldlong(databuf+INT8_LO_OFFSET); ^

“cdcapi_INFORMIX.ec”,第 558 行:警告 #2223-D:函数“ldbigint”隐式声明 ldbigintx(&c_bigint, databuf); ^

“cdcapi_INFORMIX.ec”,第 587 行:警告 #2223-D:函数“lddecimal”隐式声明 lddecimal(databuf, Coldesc.colobj[col].colsize, &c_decimal); ^

“cdcapi_INFORMIX.ec”,第 687 行:警告 #2223-D:函数“rtypsize”隐式声明 colsize = rtypsize(sqlda->sqlvar[col].sqltype, ^

“cdcapi_INFORMIX.ec”,第 747 行:警告 #2223-D:隐式声明函数“ldlong” lsn_hi = ldlong(databuf + TRUNCATE_LSN_HI_OFFSET); ^

“cdcapi_INFORMIX.ec”,第 778 行:警告 #2223-D:隐式声明函数“ldlong” tabid = ldlong(databuf+TABSCHEMA_USERDATA_OFFSET); ^

“cdcapi_INFORMIX.ec”,第 873 行:警告 #2223-D:隐式声明函数“ldlong” lsn_hi = ldlong(databuf + TXN_LSN_HI_OFFSET); ^

“cdcapi_INFORMIX.ec”,第 908 行:警告 #2223-D:函数“ldlong”隐式声明 lsn_hi = ldlong(databuf + DISCARD_LSN_HI_OFFSET); ^

“cdcapi_INFORMIX.ec”,第 947 行:警告 #2223-D:函数“ldlong”隐式声明 lsn_hi = ldlong(databuf + IUD_LSN_HI_OFFSET); ^

“cdcapi_INFORMIX.ec”,第 1019 行:警告 #2223-D:函数“ldlong”隐式声明 cur_log_header.ch_size_hdr = ldlong(a_recordbuf); ^

“cdcapi_INFORMIX.ec”,第 1342 行:警告 #2549-D:变量“recptr”在其值设置之前使用 memcpy(databuf, recptr, bytes_left_over_in_previous_buf); ^

“cdcapi_INFORMIX.ec”,第 1387 行:警告 #2223-D:函数“ldlong”隐式声明 hdrsize = ldlong(recptr);


将程序运行为

./CDCEXE -D db1 -T "bill.t1" -C "a,b" -T t2 -C "a,c" INFORMIXSERVER [server1] Connected to syscdcv1@server1 CDC_OPENSESS for server1 server1 with Timeout 300 Max recs per read 1

CDC API 'cdc_opensess' 在 cdcapi_INFORMIX.ec:1277 失败。CDCAPI_RETVAL = -83702, CDC_ERRORCODE = CDC_E_APIVERS CDC 错误描述是请求的 CDC API 行为版本无效或不受支持。

读取的总缓冲区数:0 提取的总记录数:0 每个缓冲区的平均记录数:0.000000


4

1 回答 1

3

CDC 错误 -83702 是指 API 版本不匹配。由于您的 ESQL/C 版本是 3.50.FC5,我假设您的 Informix 服务器版本是 11.50.FC5。这使用 CDC API 的早期版本 (1.0),而来自 IBM Knowledge Center 的示例代码使用 API 版本 1.1。

此问题可以通过将 Informix 服务器升级到 11.50.FC6 或更高版本来解决。最新的 11.50 版本是 11.50.FC9W3。

于 2017-03-10T11:51:12.397 回答