【问题标题】:Exception when connecting to Cassandra with CQL using DataStax Java driver 1.0.4使用 DataStax Java 驱动程序 1.0.4 通过 CQL 连接到 Cassandra 时出现异常
【发布时间】:2013-12-22 22:51:45
【问题描述】:

我的笔记本电脑上运行着 Cassandra 1.2.11。我可以使用 nodetoolcqlsh 连接到它,但是当我尝试使用 DataStax 1.0.4 Java API 使用 CQL 3.0 进行连接时,我收到以下错误:

com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: localhost/127.0.0.1 ([localhost/127.0.0.1] Unexpected error during transport initialization (com.datastax.driver.core.TransportException: [localhost/127.0.0.1] Channel has been closed)))
    at com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:186)

我使用以下代码进行连接,取自 DataStax 文档。我已经尝试了几个端口号,包括将 withPort() 呼叫保留,但似乎没有任何效果。

Cluster cluster = new Cluster.Builder()
        .addContactPoints("localhost")
        .withPort(9160)
        .build();

使用telnet 我可以验证Cassandra 服务器确实在监听我指定的每个端口。我还验证了所有必需的库 jar 文件都在我的类路径中,如文档中所述。

【问题讨论】:

    标签: java cassandra cql3 datastax-java-driver


    【解决方案1】:

    原来我错过了documentation 中的一个部分。

    我使用的是 Cassandra 早期版本中的旧 cassandra.yaml 配置文件,它没有启用 Native Transport 二进制协议。以下 sn-p 显示了我需要更改的设置:

    # Whether to start the native transport server.
    start_native_transport: true
    # port for the CQL native transport to listen for clients on
    native_transport_port: 9042 
    

    重新启动 Cassandra 后,客户端能够成功连接并运行 CQL 3.0 命令。请注意,必须将创建连接的代码更改为使用文件中指定的端口,如下所示:

    Cluster cluster = new Cluster.Builder()
            .addContactPoints("localhost")
            .withPort(9042)
            .build();
    

    另外,请注意,从Cassandra 1.2.5 及以上版本开始,默认启用本机传输。

    【讨论】:

      【解决方案2】:

      在尝试将旧版本的 java 驱动程序与较新的 cassandra 版本一起使用时,您也会收到此错误。

      【讨论】:

      • 我正在运行 Cassandra Community 2.0.6,我需要使用哪个驱动程序版本?我尝试了 2.0.1,但我仍然收到错误。我可以远程登录到端口和 IP 地址,所以我知道它们正在运行......
      【解决方案3】:

      我在 Ubuntu 中遇到了同样的问题。我最近使用以下命令安装了 datastax 指南

      apt-get install cassandra=2.0.11 dsc20=2.0.11-1

      之前我只用过

      apt-get 安装 cassandra

      那么它对我来说也是同样的问题。我刚刚删除然后使用第一个命令(datastax 指南)安装它。

      附:要删除 cassandra,请使用以下命令

      apt-get purge cassandra

      【讨论】:

        猜你喜欢
        • 2014-11-07
        • 2021-02-09
        • 2017-12-23
        • 1970-01-01
        • 2016-08-12
        • 2016-11-29
        • 1970-01-01
        • 1970-01-01
        • 2013-12-23
        相关资源
        最近更新 更多