我创建了一个名为'test'的表。
CREATE TABLE test1(
link text PRIMARY KEY,
title text,
descp text,
pubdate text,
ts timestamp
);
然后我将记录插入:
INSERT INTO test1(title,link,descp,pubdate, ts) VALUES('T3','http://link.com/a3','D3','date3', toTimestamp(now())) IF NOT EXISTS;
这会导致错误(cqlsh中的红色文本):NoHostAvailable
Cassandra设置在Mac OS El Capitain上使用Cassandra版本3.9。 关键空间是:
CREATE KEYSPACE testkeyspace
WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 3};
这是我根据stackoverflow上的答案更改的配置参数:
start_rpc: true (from false)
start_native_transport: true (from false)
仍然,我似乎无法指出为什么我不能在插入语句“IF NOT EXISTS”的末尾使用这些关键字运行INSERT INTO语句
请注意,我使用“cassandra -f”
启动了Cassandra如果你知道这里有什么问题,请帮忙。
答案 0 :(得分:1)
尝试的可能性,许多驱动程序现在使用LOCAL_ONE作为默认一致性级别。使用SimpleStrategy,您可以获得即使所有节点都处于启动状态,但如果DC中没有节点具有数据,请求可能会失败(CASSANDRA-12053)。这应该作为UnavailableException公开,而不是NoHostAvailable,但是值得尝试使用网络拓扑RF。
这是1节点集群吗?具有复制因子>节点数量无疑会导致问题,所以每条评论设置为1是一个好主意。
cassandra在查询时是否还在运行?使用5*4*3*2*1*1
,您需要保持Cassandra在前台运行,否则cqlsh将失去其连接并提供NoHostAvailable异常。