Ошибки Informix CDC API

Я получаю ошибки при попытке запустить 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 EMBEDDED SQL для C версии 3.50.FC5 Copyright (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 [сервер1] Подключен к syscdcv1@server1 CDC_OPENSESS для server1 server1 с тайм-аутом 300 записей максимум на чтение 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 ответ

Ошибка CDC -83702 относится к несоответствию в версии API. Поскольку ваша версия ESQL/C - 3.50.FC5, я предполагаю, что версия вашего сервера Informix - 11.50.FC5. При этом используется более ранняя версия (1.0) API CDC, в то время как пример кода из Центра знаний IBM использует API версии 1.1.

Эта проблема может быть решена путем обновления сервера Informix до версии 11.50.FC6 или новее. Последняя версия 11.50 - 11.50.FC9W3.

Другие вопросы по тегам