2013-06-03 3 views
0

ПолучениеНевозможно вставить данные в Cassandra-кли

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

Команды консоли:

// 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}, где ключ UUID сгенерирован как ключ UUID = UUIDGenerator.getInstance(). GenerateRandomBasedUUID(); – Shalu

+0

Какая команда cassandra-cli вы используете? – Richard

ответ

1

Если вы используете 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); 

Затем вы можете сделать Lookups как:

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

, который расскажет вам, если UUID существует или нет. Вы можете добавить другие столбцы позже и получить их с помощью вышеуказанного запроса SELECT.