我在尝试运行Informix CDC api时遇到错误。
我将代码https://www.ibm.com/support/knowledgecenter/SSGU8G_11.50.0/com.ibm.cdc.doc/ids_cdc_060.htm复制到了cdcapi_INFORMIX.ec
作为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 适用于C版本3.50.FC5的IBM / Informix EMBEDDED SQL 版权所有(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]连接到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
答案 0 :(得分: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。