我正在使用以下指南在 Digital Ocean 的 Droplet 中安装 cassandra db: https://www.digitalocean.com/community/tutorials/how-to-install-cassandra-and-run-a-single-node-cluster-on-ubuntu-22-04 但是,当我尝试使用 cqlsh 连接它时,出现:
root@ubuntu-s-cass-history-chat:~# cqlsh
Traceback (most recent call last):
File "/usr/bin/cqlsh.py", line 134, in <module>
from cassandra.cluster import Cluster
File "/usr/share/cassandra/lib/cassandra-driver-internal-only-3.25.0.zip/cassandra-driver-3.25.0/cassandra/cluster.py", line 33, in <module>
ModuleNotFoundError: No module named 'six.moves'
我尝试使用 apt-get install python3-6 安装六个,但保留了该消息。`
¿可能是什么?
此外,如果我尝试使用 python 从 PC 远程连接到 cassandra 数据库,并且会出现 cassandra 驱动程序库:
NoHostAvailable: ('无法连接到任何服务器', {'host:port': ConnectionRefusedError(10061, "尝试连接到 [('host', port)]。最后一个错误:无法建立连接,因为计算机目标明确否认所述连接")})
要尝试连接,我使用以下代码:
from cassandra.cluster import Cluster
cluster = Cluster([host], port=port)
session = cluster.connect()
没有名为“six.moves”的模块
因此在 Python 3.12 上运行 cqlsh 时会发生该错误。将 Cassandra
bin/
目录(使用 pyenv)的自定义 Python 版本降级或设置为 Python 3.9。该版本应该可以工作。
Tried connecting to [('host', port)]
首先,驱动程序默认使用默认端口9042。不要更改它。事实上,甚至不要在代码中列出它;只需像这样定义您的
Cluster
即可:
cluster = Cluster([host])
host
的价值是多少?是127.0.0.1吗?如果 Cassandra 绑定到 localhost/127.0.0.1,它将只能接受本地连接。其他机器将无法连接到它。
无论如何,我首先要弄清楚
host
的值是多少。在您的代码中添加 print("host={0}".format(host))
并确保这一点。
您还需要确保
host
设置为 Cassandra 绑定到的可访问 IP 地址。 你可以用这个命令来解决这个问题:
grep _address conf/cassandra.yaml | grep -v "#"
它应该产生如下所示的输出:
listen_address: 10.1.2.120
rpc_address: 33.70.150.101