You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python连接Cassandra数据库时出现NoHostAvailable错误求助

连接Cassandra数据库时出现NoHostAvailable错误排查

问题描述

我按照官方文档步骤编写Python代码连接Cassandra数据库,但运行后出现如下错误:

NoHostAvailable: ('Unable to connect to any servers', {'hosts"port': OperationTimedOut('errors=None, last_host=None'),

环境配置

  • Python版本:2.7和3(已配置两者的classpath)
  • Java版本:1.8(已配置classpath)
  • Apache Cassandra版本:3.11.6(已配置apache home classpath)

排查解决步骤

  1. 检查Cassandra服务状态
    确认Cassandra服务是否正常启动,执行命令:

    nodetool status
    

    若服务未启动,先启动Cassandra服务。

  2. 验证连接地址与端口
    检查代码中指定的Cassandra主机地址和端口是否正确,默认端口为9042。确保代码里的Cluster()参数填写了实际运行Cassandra的主机IP,示例:

    from cassandra.cluster import Cluster
    cluster = Cluster(['127.0.0.1'], port=9042)
    session = cluster.connect()
    

    同时确认主机地址无拼写错误,端口未被其他程序占用。

  3. 检查防火墙与网络连通性

    • 本地连接:确认本地防火墙未拦截9042端口,可临时关闭防火墙测试。
    • 远程连接:若连接远程Cassandra节点,需确保远程主机9042端口对外开放,且网络可连通目标主机。用以下命令测试端口连通性:
      telnet your_cassandra_host 9042
      # 或使用nc命令
      nc -zv your_cassandra_host 9042
      
  4. 检查Cassandra配置文件
    打开Cassandra的cassandra.yaml配置文件,确认以下参数:

    • listen_address:设置为Cassandra节点的实际IP,或0.0.0.0允许所有地址访问(生产环境谨慎使用)
    • rpc_address:设置为可被访问的IP,默认是localhost,若需远程连接需改为节点IP或0.0.0.0
    • native_transport_port:确认值为9042,未被修改
  5. 确认Python驱动兼容性与安装状态
    Cassandra 3.11.6兼容3.11至3.25版本的Python驱动,可重新安装指定版本驱动确保无安装异常:

    # Python3环境
    pip install cassandra-driver==3.25.0
    # Python2.7环境
    pip2 install cassandra-driver==3.25.0
    
  6. 清理多余的Classpath配置
    Python连接Cassandra无需配置Java或Apache的classpath,这类配置属于多余操作,建议取消相关classpath设置,避免引发冲突。

内容的提问来源于stack exchange,提问作者Dolly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 02:35:23