哪个版本的 cqlsh 与 Cassandra 2.1.9 兼容?

Which version of cqlsh is compatible with Cassandra 2.1.9?

我面临与问题 populate_io_cache_on_flush is not a column defined in this metadata 中提到的相同问题。

根据KIC in the 2nd comment on this answer指定的解决方案,我需要

"Use the same client library than the server is. i.e. after a ubuntu updates the server (what happened today) all your client programs have to upgrade the driver too."

我正在使用 Cassandra 2.1.9。和 cqlsh 5.0.1 .

[cqlsh 5.0.1 | Cassandra 2.1.9 | CQL spec 3.2.0 | Native protocol v3]

我应该使用哪个版本的 cqlsh 来解决我的问题?

----

Edit(Solved): 我使用客户端库版本 2.1.3 解决了这个问题。

我的 Maven 依赖项现在看起来像:

<dependency>
        <groupId>com.datastax.cassandra</groupId>
        <artifactId>cassandra-driver-core</artifactId>
        <version>2.1.3</version>
</dependency>

谢谢大家的帮助。

这是一个极其丑陋但快速的修复方法:

在您的文件系统中找到 cqlsh.py 文件,并将 DEFAULT_PROTOCOL_VERSION 更改为 3:

...
DEFAULT_CQLVER = '3.3.0'
DEFAULT_PROTOCOL_VERSION = 3
DEFAULT_CONNECT_TIMEOUT_SECONDS = 5
...

在我的系统上(Mac OS X 通过 homebrew 安装)这个文件位于:

/usr/local/Cellar/cassandra/2.2.0/libexec/bin/cqlsh.py

奇怪的是你不能通过命令行覆盖这个变量..

您可能还必须像这样更改实际的 CQL 版本:

cqlsh 127.0.0.1 --cqlversion=3.2.0

临时修复了一个非常烦人的问题..

这是一个错误。该问题已在上游修复:https://issues.apache.org/jira/browse/CASSANDRA-13307 但尚未发布。但是,您可以查看 cassandra 存储库并自行构建。或者只是使用 pip 和 运行 以及来自 cassandra checkout 的 cqlsh 脚本安装依赖项。