2010-03-08 37 views
5

Trong Cassandra, tôi có gia đình Cột sau:Làm cách nào để chèn một hàng có cột TimeUUIDType vào Cassandra?

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

Tôi đang cố gắng để chèn một bản ghi vào nó như sau sử dụng một hàm C++ tạo được tạo ra bởi 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); 

Tuy nhiên, tôi 'm nhận được lỗi sau: "UUID phải chính xác 16 byte"

Tôi thậm chí đã thử CLI Cassandra với lệnh sau:

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

nhưng tôi vẫn nhận được lỗi sau:

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) 

Trả lời

7

Thrift là một giao thức nhị phân; 16 byte có nghĩa là 16 byte. "1968ec4a-2a73-11df-9aca-00012e27a270" là 36 byte. Bạn cần phải nhận được thư viện của bạn để cung cấp cho bạn dạng thô, 16 byte.

Tôi không sử dụng C++, nhưng "phiên bản 1 uuid" là chuỗi ma thuật bạn muốn google tìm khi tìm thư viện có thể thực hiện việc này. http://www.google.com/search?q=C%2B%2B+version+1+uuid

Các vấn đề liên quan