2013-06-03 65 views
0

獲取無法在卡桑德拉-CLI

插入數據
cassandra error: cannot parse uuid as hex bytes` 

java.sql.SQLSyntaxErrorException: cannot parse '8768c481-a118-48b7-aed2-2903b917d045' as hex bytes 
    at org.apache.cassandra.cql.jdbc.CassandraPreparedStatement.doExecute(CassandraPreparedStatement.java:155) 
    at org.apache.cassandra.cql.jdbc.CassandraPreparedStatement.execute(CassandraPreparedStatement.java:191) 
    at CassClass.main(CassClass.java:55) 

模式:

{ 
    column_name: key, 
    validation_class: UTF8Type, 
    index_type: KEYS 
} where key is UUID generated 
as UUID key = UUIDGenerator.getInstance().generateRandomBasedUUID(); 

CLI命令:

// Created column family with: 
create column family newdata with comparator = UTF8Type; 

// Then, updated the column family newdata with: 
column_metadata =[{column_name: key, validation_class: UTF8Type, index_type: KEYS}]; 
+1

你可以粘貼你的整個cassandra-cli輸出嗎?你的模式是什麼? – Richard

+0

{column_name:key,validation_class:UTF8Type,index_type:KEYS}其中key是生成爲UUID的UUID key = UUIDGenerator.getInstance()。generateRandomBasedUUID(); – Shalu

+0

您使用的是什麼cassandra-cli命令? – Richard

回答

1

如果您正在使用CQL,它是創造最佳實踐您的CQL系列也是CQL。看來你已經發現了一個錯誤,因爲生成的CQL模式是無效的(有兩列叫做鍵):

CREATE TABLE newdata (
    key blob PRIMARY KEY, 
    key text 
); 

不過,如果你只想要一個字段建立索引,你可能想下面的架構:

CREATE TABLE newdata (
    key uuid PRIMARY KEY 
); 

這裏,主鍵是UUID類型,因此檢查您的密鑰是否是有效的UUID。然後,您可以插入:

INSERT INTO newdata (key) VALUES (8768c481-a118-48b7-aed2-2903b917d045); 

然後,你可以做查找,如:

SELECT * FROM newdata1 where key = 8768c481-a118-48b7-aed2-2903b917d045; 

如果UUID存在與否,這將告訴你。您可以稍後添加其他列並使用上面的SELECT查詢來檢索它們。