2010-03-08 10 views
5

कैसेंड्रा में, मैं निम्नलिखित कॉलम परिवार:कैसंड्रा में टाइमयूयूआईडी टाइप कॉलम के साथ मैं पंक्ति कैसे डालूं?

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

मैं के रूप में एक सी ++ उत्पन्न बचत द्वारा उत्पन्न समारोह का उपयोग कर इस प्रकार इसे में एक रिकार्ड डालने के लिए कोशिश कर रहा हूँ:

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

हालांकि, मैं 'm निम्न त्रुटि हो रही है:

: "UUIDs वास्तव में 16 बाइट्स होना चाहिए"

मैं भी निम्न आदेश के साथ कैसेंड्रा CLI की कोशिश की है

लेकिन मैं अभी भी निम्न त्रुटि मिलती है:

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 बाइट्स। "1 9 68ec4a-2a73-11df-9aca-00012e27a270" 36 बाइट्स है। आपको कच्ची, 16 बाइट्स फॉर्म देने के लिए आपको अपनी लाइब्रेरी प्राप्त करने की आवश्यकता है।

मैं स्वयं सी ++ का उपयोग नहीं करता हूं, लेकिन "संस्करण 1 यूयूआईडी" वह जादू स्ट्रिंग है जिसे आप पुस्तकालय की तलाश करते समय Google के लिए करना चाहते हैं जो ऐसा कर सकता है। http://www.google.com/search?q=C%2B%2B+version+1+uuid

संबंधित मुद्दे