Informix CDC API错误

时间:2017-03-09 05:08:39

标签: informix transactional-replication oracle-cdc

我在尝试运行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。但似乎工作。任何人都可以提供一些指示

  3.   

    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

         

1 个答案:

答案 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。