2016-04-19 14 views
1

nur einen Tag bevor ich mit Aerospike zu arbeiten begann. Ich habe ein Problem beim Schreiben einer Probe mit LDT (Große Datentypen - Große Liste). Ich möchte einen Schlüssel mit curdate mit angehängt als Schlüssel (20160419_2000_List) erstellen und später werde ich Rohdaten (Byte-Array) als Listenwerte hinzufügen. Dafür kann ich die Datenbank korrekt verbinden, aber ich kann keinen Schlüssel für die Liste erstellen. Kannst du mir das bitte zeigen? Sie können den folgenden Code beziehen, um eine Vorstellung davon zu bekommen, was ich genau mache.as_ldt_init konnte nicht initialisiert werden - C++ Client

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; 
     } 
+0

Gibt es einen Grund Sie nicht eine reguläre Liste verwenden, und Atom-Liste Operationen, um dies zu tun? Welche Funktionalität von LList benötigen Sie? –

Antwort

2

Überprüfen Sie die Länge von m_sTFPListStr in Ihrem Code.

Die Codes der Funktion as_ldt_init, die die Parameter überprüfen wird:

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; 
    } 
    ... 
} 

Da der Wert von AS_BIN_NAME_MAX_LEN:

#define AS_BIN_NAME_MAX_LEN (AS_BIN_NAME_MAX_SIZE - 1) 
#define AS_BIN_NAME_MAX_SIZE 15 
Verwandte Themen