Question

Dans Cassandra, j'ai la famille colonne suivante:

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

Je suis en train d'insérer un enregistrement dans comme suit en utilisant une fonction C ++ généré 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 reçois 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)
Était-ce utile?

La solution

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

Je ne l'utilise C ++ moi-même, mais « version 1 UUID » est la chaîne magique que vous voulez pour Google lors de la recherche d'une bibliothèque qui peut le faire. http://www.google.com/search?q = C% 2B% 2B + Version + 1 + uuid

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top