在本地主机端口 9042 二进制协议模式下连接到 Cassandra 时出现 cqlsh 错误
cqlsh errors when connecting to Cassandra on localhost port 9042 binary protocol mode
我刚开始学习 cassandra,我正在 运行遇到 cqlsh 的问题。我是 运行ning Cassandra 2.2.2 和 cqlsh 4.1.1。我的 Cassandra.yaml 文件我将 start_rpc: false
设置为不想使用 Thrift 协议。
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 的更多详细信息:
rpc_address: localhost
listen_address: localhost
broadcast_rpc_address
未设置。它被注释掉了。它猜这是默认值/
在您的 cassandra.yaml 中,listen_address
、rpc_address
和 broadcast_rpc_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 一起提供的。如果你真的有 Cassandra 2.2,那么你的 cqlsh 版本至少应该是 5.0.
最重要的是,确保您使用的是随您的 Cassandra 版本一起提供的 cqlsh。
我刚开始学习 cassandra,我正在 运行遇到 cqlsh 的问题。我是 运行ning Cassandra 2.2.2 和 cqlsh 4.1.1。我的 Cassandra.yaml 文件我将 start_rpc: false
设置为不想使用 Thrift 协议。
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 的更多详细信息:
rpc_address: localhost
listen_address: localhost
broadcast_rpc_address
未设置。它被注释掉了。它猜这是默认值/
在您的 cassandra.yaml 中,listen_address
、rpc_address
和 broadcast_rpc_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 一起提供的。如果你真的有 Cassandra 2.2,那么你的 cqlsh 版本至少应该是 5.0.
最重要的是,确保您使用的是随您的 Cassandra 版本一起提供的 cqlsh。