我有一个列系列描述如下。我有名字栏的二级密钥。
CREATE TABLE group (
pid timeuuid,
members map<bigint, boolean>,
name text,
PRIMARY KEY ((pid))
) WITH
bloom_filter_fp_chance=0.010000 AND
caching='KEYS_ONLY' AND
comment='' AND
dclocal_read_repair_chance=0.100000 AND
gc_grace_seconds=864000 AND
index_interval=128 AND
read_repair_chance=0.000000 AND
replicate_on_write='true' AND
populate_io_cache_on_flush='false' AND
default_time_to_live=0 AND
speculative_retry='99.0PERCENTILE' AND
memtable_flush_period_in_ms=0 AND
compaction={'class': 'SizeTieredCompactionStrategy'} AND
compression={'sstable_compression': 'LZ4Compressor'};
CREATE INDEX pidx ON group(name);
但query
关于来自java驱动程序的name
列的相等性给了我一个
com.datastax.driver.core.exceptions.InvalidQueryException: No indexed columns present in by-columns clause with Equal operator
我的查询如下。谷歌中的所有搜索结果都是关于没有secondary index
或使用一些非等同关系运算符。
尽管有二级索引,但这个错误的原因是什么?
以下是我的问题:SELECT * FROM group WHERE name ='Name'
更新:相同的架构在我的localhost cassandra服务器上运行,但在我们公司提供的服务器中不运行。
在任何情况下,它都在cqlsh
窗口工作,但在远程服务器的情况下它不能通过java数据存储驱动程序工作其他类型的查询工作正常。
谢谢。
答案 0 :(得分:2)
刚刚浏览了您的代码。创建上面提到的表(使用复制粘贴只是为了确保您所做的一切都是正确的),创建了索引。一切正常。这导致两个结论之一: