2014-11-25 80 views
1

我有一個列族描述如下。我有名字欄的輔助鍵。InvalidQueryException儘管有二級索引?

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'

更新:相同的模式工作在我的本地服務器卡桑德拉但不是在服務器由我們公司提供的。

在任何情況下,它從cqlsh窗口工作,但在遠程服務器的情況下,它不是通過Java datastax駕駛其他類型的工作的查詢工作的罰款。

謝謝。

+0

甚至沒有評論?它似乎.... – pinkpanther 2014-11-25 13:33:52

+1

我只是按照你的確切步驟,它在cqlsh中爲我工作。你可以再次嘗試創建索引步驟嗎? – BrianC 2014-11-25 17:28:58

+0

我甚至在我的本地主機服務器上試過這個工作....但我在工作環境中,我正在談論我們公司提供的遠程服務器,其中存儲密鑰空間 – pinkpanther 2014-11-25 18:06:42

回答

2

剛剛通過您的代碼。創建了上面提到的表(使用複製粘貼來確保您所做的每件事都是正確的),創建了索引。一切正常。這導致了兩個結論之一:

  • 索引創建失敗,導致您看到的錯誤消息。 (我的錢是在這一個...)
  • 你可能使用不正確的keyspace。
+0

我甚至在我的本地主機服務器上試過這個工作....但我在工作環境中,我正在談論我們公司提供的遠程服務器,其中存儲密鑰空間 – pinkpanther 2014-11-25 18:06:53

+0

所有問題都是相同的列空間。如果索引創建是一個問題,我認爲它不應該從cqlsh客戶端。它從cqlsh工作,它不是從Java程序工作。 – pinkpanther 2014-11-25 18:15:15

+0

@pinkpanther我在想它的一個。嘗試在測試表上重新創建帶有索引的ks.cf對,以查看發生了什麼。 – 2014-11-25 18:33:14