【问题标题】:CQLSH Protocol Error proceeding from apparent version conflicts明显的版本冲突导致 CQLSH 协议错误
【发布时间】:2016-12-04 10:21:46
【问题描述】:

我在 Ubuntu Server 16.04 LTS 32 位机器上运行 Cassandra 3.7,我从存储中重新利用它。我设法正确配置 JVM 以在 32 位环境中运行。 Nodetool 状态工作正常。但是我很难让 CQLSH 工作。我最终得到以下错误:

('Unable to connect to any servers', {'127.0.0.1': ProtocolError("cql_version '3.4.2' is not supported by remote (w/ native protocol). Supported versions: [u'3.4.0']",)})

显然这里存在一些版本冲突,但我对为什么以及如何解决它感到困惑。我之前安装了 Cassandra 3.0,我配置了 cassanda-env.sh 以正确启动 JVM。当我安装到 3.7 时,我保留了那个 .sh 文件。我使用新安装更新了 cassandra.yaml。

所以我的问题是:Cassandra 3.7 是否支持 CQL 3.4.2?如果不是,那么为什么它似乎随它一起发货?如果没有,我需要做什么才能降级到 CQL 3.4.0?如果它确实支持它并且我的配置文件有误,那么错误是什么,我该如何解决?或者,我在这里完全缺少另一种配置吗?

这是我目前的配置:

cassandra-env.sh:https://www.dropbox.com/s/dcs99hgry5behqd/cassandra-env.sh?dl=0 cassandra.yaml:https://www.dropbox.com/s/boi8bh7gin0390f/cassandra.yaml?dl=0

非常感谢任何帮助。

编辑:在第一个答案的帮助下,我发现我有一个较旧的服务器实例正在运行。我无法从正确的版本开始...所以我从 /etc/init.d 中删除了 cassandra,现在我无法让 debian 包自动注册服务。

EDIT2:从 git repo 下载了 cassandra 脚本,现在 cassandra 将在重新启动后重新启动。现在 cassandra -v 向我展示:

3.7

我想看到什么并解决了与版本冲突有关的问题。但现在不幸的是,我看到了一个新错误:

Connection error: ('Unable to connect to any servers', {'127.0.0.1': TypeError('ref() does not take keyword arguments',)})

此问题已解决:cqlsh connection error: 'ref() does not take keyword arguments'

【问题讨论】:

    标签: java cassandra cql cql3 cqlsh


    【解决方案1】:

    看起来您正在针对较旧的服务器实例运行 3.7 cqlsh。首先,确保您实际运行的是 Cassandra 3.7(您可能只需检查 jar 路径或查看日志)。

    如果您想使用宣传的 cql_version 进行连接,则有一个命令行选项: https://github.com/apache/cassandra/blob/cassandra-3.7/bin/cqlsh.py#L222

    select release_version, cql_version from system.local;
    

    (或者只看cqlsh欢迎头)看看这些参数是什么。

    【讨论】:

    • 非常感谢您的回复。我正在查看日志,看来您是正确的。运行的任何实例都不支持 3.4.0。我查看了 cqlsh.py ,这是正确的版本。现在让我感到困惑的是,在从存储库安装新版本之前,我在 cassandra 上执行了 sudo apt-get remove ...
    • 好的,nodetool 版本给了我 3.0.8。我该如何清除它?
    • 没有什么要清除的。听起来您正在运行旧版本。您遵循什么升级程序?你关机了吗?新软件包是否安装正确?初始化脚本是否已更新并指向新安装?
    • 我直到现在才关机,但在我从 /etc/init.d 删除 cassandra.service 之前没有关机,现在我认为我已经进一步破坏了它,因为再次安装 cassandra 没有更新服务。为了升级,在将最新版本的存储库添加到我的包列表之后,sudo apt-get remove cassandra 然后 sudo apt-get install cassandra。
    猜你喜欢
    • 2018-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-17
    • 2016-12-26
    • 1970-01-01
    • 2015-08-12
    相关资源
    最近更新 更多