在卡桑德拉找到身份证不起作用
我与卡桑德拉有一个奇怪的行为。每当我尝试通过id找到一些行时,它会返回null(通过cqlsh控制台或客户端),但是如果通过另一个字段找到该寄存器,则该寄存器会存在。 例如: 在卡桑德拉找到身份证不起作用
我的表模式:
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
这究竟是为什么?
你有两个选择:在每个节点上
运行nodetool修复,以提高数据的一致性
提高您的客户端一致性水平。在cqlsh,与价值QUORUM或ALL
然后重试,回到我们如果仍无法正常工作运行命令一致性。
运行**是否有任何副作用** CONSISTENCY ** ??我对Cassadra有点新鲜,所以对于会发生什么或可能出错的一些解释将不胜感激!感谢您的时间 – Leonardo
建议使用CONSISTENCY QUORUM。我认为它应该是cqlsh的默认值。一致性更强但不容错。您应该阅读[this](http://docs.datastax.com/en/archived/cassandra/2.0/cassandra/dml/dml_config_consistency_c.html)以获得与Cassandra一致性模型的联系。 – DineMartine
好吧,我会给QUORUM一个尝试,读更多关于它。运行nodetool修复似乎可以解决问题。只要我100%确定,我会接受你的答案。感谢所有的信息! – Leonardo
你在每个DC中有多少个节点?你的密钥空间的RF和Class名称是什么? –
使用以下命令在cqlsh中更改默认一致性级别: cqlsh:test> CONSISTENCY; (检查您的默认一致性级别) cqlsh:test> CONSISTENCY ALL; (将其更改为ALL) 然后检查您是否通过相同的查询获取数据。 – Chaity