我面临问题populate_io_cache_on_flush is not a column defined in this metadata中提到的同样问题。
根据KIC在answer的第2条评论中指定的解决方案,我需要
"使用与服务器相同的客户端库。即在ubuntu更新服务器(今天发生的事情)之后,所有客户端程序也必须升级驱动程序。"
我正在使用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来解决我的问题?
编辑(已解决):我使用客户端库2.1.3解决了此问题。
我的maven依赖现在看起来像:
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>2.1.3</version>
</dependency>
感谢您的帮助。
答案 0 :(得分:11)
这是一个非常丑陋但快速解决的问题:
在文件系统中找到cqlsh.py
文件,并将DEFAULT_PROTOCOL_VERSION
更改为3:
...
DEFAULT_CQLVER = '3.3.0'
DEFAULT_PROTOCOL_VERSION = 3
DEFAULT_CONNECT_TIMEOUT_SECONDS = 5
...
在我的系统上(通过homebrew
安装的Mac OS X),此文件位于:
/usr/local/Cellar/cassandra/2.2.0/libexec/bin/cqlsh.py
相当奇怪的是你不能通过命令行覆盖这个变量..
您可能还需要更改实际的CQL版本:
cqlsh 127.0.0.1 --cqlversion=3.2.0
暂时解决一个非常烦人的问题..
答案 1 :(得分:0)
这是一个错误。上游问题已修复:https://issues.apache.org/jira/browse/CASSANDRA-13307但尚未发布。但是,您可以查看cassandra repo并自行构建。或者只使用pip安装依赖项并从cassandra checkout运行cqlsh
脚本。