Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在本地主机端口9042二进制协议模式下连接到Cassandra时出现cqlsh错误_Cassandra_Cqlsh - Fatal编程技术网

在本地主机端口9042二进制协议模式下连接到Cassandra时出现cqlsh错误

在本地主机端口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

我刚开始学习卡桑德拉,我遇到了与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 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