Cassandra和cqlsh - “Cassandra unknown”和“CQL spec unknown”

时间:2014-08-06 22:46:09

标签: linux ubuntu cassandra cql cqlsh

我刚刚在Ubuntu上下载了Cassandra 1.0.10和Java 1.6.0_45。当我在终端上运行命令cqlsh时,我得到以下输出:

Connected to Test Cluster at localhost:9160. 
[cqlsh 2.0.0 | Cassandra unknown | CQL spec unknown | Thrift protocol 19.20.0]
Use HELP for help.

有人可以向我解释为什么它说" Cassandra未知"和" CQL规范未知"?我也无法获得命令

 DESC KEYSPACES;

工作 - 它只是说

Improper desc command.

有人可以告诉我这里的问题是什么吗?我意识到我使用的是较旧版本的Cassandra-这可能是原因吗?

编辑:我意识到上面的工作没有用,因为我使用了错误的语法。它应该是DESC KEYSPACES;所以照顾那个。

1 个答案:

答案 0 :(得分:2)

  

我也无法获得命令

   DESC KEYSPACES;
     

工作 - 它只是说

   Improper desc command.

那是因为DESC KEYSPACES不是Cassandra 1.0.x附带的cqlsh版本中的有效命令。这是source from that version。只需跳到def do_describe(self, parsed):,您就会发现它不在那里。更好的是,从cqlsh开始,您可以通过运行help desc来验证这一点。 DESC KEYSPACE [<keyspacename>]是,DESC KEYSPACES不是。

同样,出于同样的原因,您会看到此| Cassandra unknown | CQL spec unknown |。该版本的cqlsh尝试使用system.Versions列系列查看您运行的软件版本。但是旧版本的1.0.x必须没有该列系列。在上面的相同链接中,请跳至def get_cluster_versions(self):,然后您将找到负责的代码:

def get_cluster_versions(self):
    try:
        self.cursor.execute('select component, version from system.Versions')
        vers = dict(self.cursor)
    except cql.ProgrammingError:
        # older Cassandra; doesn't have system.Versions
        thrift_ver = self.get_thrift_version()
        return {'build': 'unknown', 'cql': 'unknown', 'thrift': thrift_ver}
    return vers

基本上,您的问题是由于您使用的是TRS-80 Cassandra版本。从那时起使用Cassandra的版本,我可以告诉你,你的问题不会变得更好。除了您所遗漏的2.0.x的所有强大功能之外,该版本还受到很久以来被淘汰的错误的影响。尽管您的公司可能不会想要,但他们只是通过拒绝升级来引发更多潜在问题。