2010-03-08 5 views
5

В Кассандре, у меня есть следующие колонки Семья:Как вставить строку с столбцом TimeUUIDType в Cassandra?

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

Я пытаюсь вставить запись в него, как следует с помощью C++ генерируется функция, порожденная бережливости:

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); 

Тем не менее, я «получаю следующее сообщение об ошибке:„UUID, должно быть ровно 16 байт“

Я даже попробовал Cassandra CLI с помощью следующей команды:

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

, но я все еще получаю следующее сообщение об ошибке:

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) 

ответ

7

Бережливость является двоичным протоколом; 16 байтов - 16 байтов. «1968ec4a-2a73-11df-9aca-00012e27a270» - 36 байт. Вам нужно, чтобы ваша библиотека предоставила вам необработанную форму размером 16 байт.

Я не использую сам C++, но «версия 1 uuid» - это волшебная строка, которую вы хотите использовать в Google, когда ищете библиотеку, которая может это сделать. http://www.google.com/search?q=C%2B%2B+version+1+uuid

 Смежные вопросы

  • Нет связанных вопросов^_^