as_ldt_init 初始化失败 -- C++ 客户端
as_ldt_init failed to initialize -- C++ client
就在我开始使用 aerospike 的前一天。我在使用 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;
}
检查代码中 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] == '[=10=]' || 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
就在我开始使用 aerospike 的前一天。我在使用 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;
}
检查代码中 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] == '[=10=]' || 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