Cassandra:在cqlsh

时间:2016-11-02 11:19:12

标签: cassandra cassandra-2.0

我创建了一个名为'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

如果你知道这里有什么问题,请帮忙。

1 个答案:

答案 0 :(得分:1)

尝试的可能性,许多驱动程序现在使用LOCAL_ONE作为默认一致性级别。使用SimpleStrategy,您可以获得即使所有节点都处于启动状态,但如果DC中没有节点具有数据,请求可能会失败(CASSANDRA-12053)。这应该作为UnavailableException公开,而不是NoHostAvailable,但是值得尝试使用网络拓扑RF。

这是1节点集群吗?具有复制因子>节点数量无疑会导致问题,所以每条评论设置为1是一个好主意。

cassandra在查询时是否还在运行?使用5*4*3*2*1*1,您需要保持Cassandra在前台运行,否则cqlsh将失去其连接并提供NoHostAvailable异常。