2017-04-06 51 views
1

我與卡桑德拉有一個奇怪的行爲。每當我嘗試通過id找到一些行時,它會返回null(通過cqlsh控制檯或客戶端),但是如果通過另一個字段找到該寄存器,則該寄存器會存在。 例如: enter image description here在卡桑德拉找到身份證不起作用

我的表模式:

CREATE TABLE IF NOT EXISTS user_aggregation_new.user_aggregation_new (
    userid timeuuid PRIMARY KEY, 
    fullname text, 
    birthdate text, 
    password text, 
    mobile text, 
    address frozen <address>, 
    thumbs map<text, text>, 
    driverlicense frozen <driverlicense>, 
    cpf text, 
    facebookid text, 
    membershipsince timestamp, 
    rating double, 
    email text, 
    status text, 
    facebookemail boolean, 
    bankaccount list<frozen <bankaccount>>, 
    dateupdated timestamp, 
    version bigint 
); 

卡桑德拉版本:3.7

這究竟是爲什麼?

+0

你在每個DC中有多少個節點?你的密鑰空間的RF和Class名稱是什麼? –

+2

使用以下命令在cqlsh中更改默認一致性級別: cqlsh:test> CONSISTENCY; (檢查您的默認一致性級別) cqlsh:test> CONSISTENCY ALL; (將其更改爲ALL) 然後檢查您是否通過相同的查詢獲取數據。 – Chaity

回答

2

你有兩個選擇:在每個節點上

  • 運行nodetool修復,以提高數據的一致性

  • 提高您的客戶端一致性水平。在cqlsh,與價值QUORUMALL

然後重試,回到我們如果仍無法正常工作運行命令一致性

+0

運行**是否有任何副作用** CONSISTENCY ** ??我對Cassadra有點新鮮,所以對於會發生什麼或可能出錯的一些解釋將不勝感激!感謝您的時間 – Leonardo

+0

建議使用CONSISTENCY QUORUM。我認爲它應該是cqlsh的默認值。一致性更強但不容錯。您應該閱讀[this](http://docs.datastax.com/en/archived/cassandra/2.0/cassandra/dml/dml_config_consistency_c.html)以獲得與Cassandra一致性模型的聯繫。 – DineMartine

+0

好吧,我會給QUORUM一個嘗試,讀更多關於它。運行nodetool修復似乎可以解決問題。只要我100%確定,我會接受你的答案。感謝所有的信息! – Leonardo