2010-03-08 8 views
5

Dans Cassandra, je la famille Colonne suivante:Comment insérer une ligne avec une colonne TimeUUIDType dans Cassandra?

<ColumnFamily CompareWith="TimeUUIDType" Name="Posts"/> 

J'essaie d'insérer un enregistrement dans la façon suivante en utilisant un C++ de fonction générée générée par Thrift:

ColumnPath new_col; 
new_col.__isset.column = true; /* this is required! */ 
new_col.column_family.assign("Posts"); 
new_col.super_column.assign(""); 
new_col.column.assign("1968ec4a-2a73-11df-9aca-00012e27a270"); 
client.insert("Keyspace1", "somekey", new_col, "Random Value", 1234, ONE); 

Cependant, je « obtiens l'erreur suivante: « UUID doit être exactement 16 octets »

J'ai même essayé la CLI Cassandra avec la commande suivante:

set Keyspace1.Posts['somekey']['1968ec4a-2a73-11df-9aca-00012e27a270'] = 'Random Value' 

mais je reçois toujours l'erreur suivante:

Exception null 
InvalidRequestException(why:UUIDs must be exactly 16 bytes) 
at org.apache.cassandra.thrift.Cassandra$insert_result.read(Cassandra.java:11994) 
at org.apache.cassandra.thrift.Cassandra$Client.recv_insert(Cassandra.java:659) 
at org.apache.cassandra.thrift.Cassandra$Client.insert(Cassandra.java:632) 
at org.apache.cassandra.cli.CliClient.executeSet(CliClient.java:420) 
at org.apache.cassandra.cli.CliClient.executeCLIStmt(CliClient.java:80) 
at org.apache.cassandra.cli.CliMain.processCLIStmt(CliMain.java:132) 
at org.apache.cassandra.cli.CliMain.main(CliMain.java:173) 

Répondre

7

Thrift est un protocole binaire; 16 octets signifie 16 octets. "1968ec4a-2a73-11df-9aca-00012e27a270" est de 36 octets. Vous devez obtenir votre bibliothèque pour vous donner la forme brute de 16 octets.

Je n'utilise pas C++ moi-même, mais "version 1 uuid" est la chaîne magique que vous voulez google lorsque vous cherchez une bibliothèque qui peut le faire.

Questions connexes