aerospike — as_ldt_init не удалось инициализировать — клиент C ++

только за день до того, как я начал работать с аэроспайком. У меня есть некоторые проблемы при написании одного образца с использованием LDT (Большие типы данных — Большой список). Я хочу создать ключ с currdate с добавленным в качестве ключа (20160419_2000_List), а позже я добавлю необработанные данные (байтовый массив) в качестве значений списка.
Для этого я могу правильно подключиться к базе данных, но не могу создать ключ для списка. Можете ли вы направить меня по этому вопросу.
Вы можете сослаться на следующий код, чтобы понять, что именно я делаю.

 m_sTFPKeyStr.assign(datevalue);  //datavalue consists datatime string
m_sTFPListStr.assign("List_");
m_sTFPListStr.append(datevalue);
as_key_init_str(&m_sTFPKey, m_sInputNameSpace.c_str(), m_sInputSetName.c_str(), m_sTFPKeyStr.c_str());

if (!as_ldt_init(m_sTFPListKey, m_sTFPListStr.c_str(), AS_LDT_LLIST, NULL))
{
memset(logmessage, 0x0, sizeof(logmessage));
sprintf(logmessage, "CDataBaseManager::SaveTFP Fails to initialize tfplist key %s", m_sTFPListStr.c_str());
m_pCaptureManager->m_pLogMgr->LogMsg(logmessage);
return;
}

1

Решение

Проверьте длину m_sTFPListStr в вашем коде.

Коды функции as_ldt_init который проверит параметры:

as_ldt * as_ldt_init(as_ldt * ldt, const as_bin_name name, const as_ldt_type type, const as_udf_module_name module)
{
if (!name || name[0] == '\0' || strlen(name) > AS_BIN_NAME_MAX_LEN
|| (module && strlen(module) > AS_UDF_MODULE_MAX_LEN) )
{
return NULL;
}
...
}

В качестве значения AS_BIN_NAME_MAX_LEN:

#define AS_BIN_NAME_MAX_LEN (AS_BIN_NAME_MAX_SIZE - 1)
#define AS_BIN_NAME_MAX_SIZE 15
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector