0

取得

 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}]; 
4

1 に答える 1

1

CQL を使用している場合は、列ファミリーも CQL で作成することをお勧めします。結果の CQL スキーマが無効であるため、バグを発見したようです (キーと呼ばれる 2 つの列があります)。

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

ただし、インデックスが作成されたフィールドが 1 つだけ必要な場合は、次のスキーマが必要になる可能性があります。

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 クエリでそれらを取得できます。

于 2013-06-03T12:50:32.860 に答える