我很想创建一个以TimeUUIDType作为行名称的列族:
create column family users
with column_type = 'Standard'
and comparator = 'TimeUUIDType'
and default_validation_class = 'UTF8Type'
and key_validation_class = 'UTF8Type'
and memtable_operations = 0.290625
and memtable_throughput = 62
and memtable_flush_after = 1440
and rows_cached = 0.0
and row_cache_save_period = 0
and keys_cached = 200000.0
and key_cache_save_period = 14400
and read_repair_chance = 1.0
and gc_grace = 864000
and min_compaction_threshold = 4
and max_compaction_threshold = 32
and replicate_on_write = true
and row_cache_provider = 'ConcurrentLinkedHashCacheProvider'
and column_metadata=[
{column_name: allias, validation_class: UTF8Type, index_type: KEYS, index_name: allias},
{column_name: st_user_id, validation_class: TimeUUIDType, index_type: KEYS, index_name: st_user_id},
{column_name: st_money, validation_class: IntegerType},
{column_name: mail, validation_class: UTF8Type},
{column_name: password, validation_class: UTF8Type},
{column_name: last_visit, validation_class: DateType},
{column_name: registered, validation_class: DateType}
];
但是我得到了一个例外:
org.apache.cassandra.db.marshal.MarshalException:无法胁迫 'allias'to v ersion 1 UUID
我做错了什么?
答案 0 :(得分:3)
列族的比较器属性用于对行内的列进行排序。您正在尝试使用TimeUUID比较器,这需要每个列名称都是TimeUUID值。
如果您想使用TimeUUID作为行键,但是列名称的字符串可能只是想切换这些设置的值,
comparator = 'UTF8Type',
key_validation_class = 'TimeUUIDType'