在本地主机端口9042二进制协议模式下连接到Cassandra时出现cqlsh错误
我刚开始学习卡桑德拉,我遇到了与cqlsh的问题。我正在运行Cassandra 2.2.2和cqlsh 4.1.1。我在Cassandra.yaml文件中设置了在本地主机端口9042二进制协议模式下连接到Cassandra时出现cqlsh错误,cassandra,cqlsh,Cassandra,Cqlsh,我刚开始学习卡桑德拉,我遇到了与cqlsh的问题。我正在运行Cassandra 2.2.2和cqlsh 4.1.1。我在Cassandra.yaml文件中设置了start\u rpc:false,因为我不想使用节俭协议 Cassandra启动正常,但当我运行cqlsh命令时,我得到: Connection error: Could not connect to localhost:9160 我意识到我可能应该连接到端口9042,因为我没有使用Thrift。因此,我将命令更改为: cqlsh l
start\u rpc:false
,因为我不想使用节俭协议
Cassandra启动正常,但当我运行cqlsh
命令时,我得到:
Connection error: Could not connect to localhost:9160
我意识到我可能应该连接到端口9042,因为我没有使用Thrift。因此,我将命令更改为:
cqlsh localhost 9042
我得到以下错误:
Traceback (most recent call last):
File "/usr/local/bin/cqlsh", line 2044, in <module>
main(*read_options(sys.argv[1:], os.environ))
File "/usr/local/bin/cqlsh", line 2030, in main
display_float_precision=options.float_precision)
File "/usr/local/bin/cqlsh", line 480, in __init__
cql_version=cqlver, transport=transport)
File "/usr/local/lib/python2.7/site-packages/cql/connection.py", line 143, in connect
consistency_level=consistency_level, transport=transport)
File "/usr/local/lib/python2.7/site-packages/cql/connection.py", line 59, in __init__
self.establish_connection()
File "/usr/local/lib/python2.7/site-packages/cql/thrifteries.py", line 159, in establish_connection
self.remote_thrift_version = tuple(map(int, self.client.describe_version().split('.')))
File "/usr/local/lib/python2.7/site-packages/cql/cassandra/Cassandra.py", line 1255, in describe_version
return self.recv_describe_version()
File "/usr/local/lib/python2.7/site-packages/cql/cassandra/Cassandra.py", line 1265, in recv_describe_version
(fname, mtype, rseqid) = self._iprot.readMessageBegin()
File "/usr/local/lib/python2.7/site-packages/thrift/protocol/TBinaryProtocol.py", line 126, in readMessageBegin
sz = self.readI32()
File "/usr/local/lib/python2.7/site-packages/thrift/protocol/TBinaryProtocol.py", line 206, in readI32
buff = self.trans.readAll(4)
File "/usr/local/lib/python2.7/site-packages/thrift/transport/TTransport.py", line 63, in readAll
raise EOFError()
EOFError
未设置广播地址。它被注释掉了。它猜测这是cassandra.yaml中的默认值,
listen\u address
、rpc\u address
和broadcast\u rpc\u address
的值是多少?您应该将cqlsh连接到其中一个中指定的IP
您是否安装了多个版本的Cassandra?我之所以这么问,是因为从Cassandra 2.1开始,cqlsh自动通过9042连接,所以您不需要指定它
如果您有一个通过软件包安装程序(apt-get,yum)安装的旧版本,则只需运行cqlsh
即可调用旧版本,并且您需要指定完整的路径来为新版本调用正确的路径
我之所以提到这一点,是因为cqlsh 4.1.1是与Cassandra 2.0.11和DSE 4.6.0一起交付的。如果您真的有Cassandra2.2,那么您的cqlsh版本至少应该是5.0
最重要的是,要确保您使用的是与您的Cassandra版本一起交付的cqlsh。我用您询问的详细信息更新了问题。而且,您是对的,我有Cassandra 2.1.2和2.2.2。
rpc_address: localhost
listen_address: localhost