nonodeavailableexception:没有节点可用于执行查询

wqnecbli  于 2021-06-14  发布在  Cassandra
关注(0)|答案(2)|浏览(322)

我没有使用elasticssearch。我正在尝试使用cql在cassandra中执行一些数据库操作。我正在使用线程。运行代码时,我总是在线程中得到一个异常:com.datastax.oss.driver.api.core.nonodeavailableexception:没有节点可用于执行查询。
我甚至用一根线测试过。错误仍然存在。这是我的密码:

InetAddress addrOne = InetAddress.getByName("52.15.195.41");
InetSocketAddress addrSocOne = new InetSocketAddress(addrOne,9042);
CqlSession sessionOne = CqlSession.builder().addContactPoint(addrSocOne).withLocalDatacenter("us-east-2").withKeyspace("test").build();

while(counter <= 100)
{
    String query = "select max(id) FROM samplequeue";
    ResultSet rs = session.execute(query);
    for (Row row : rs) 
    {
        int exS = row.getInt("system.max(id)");
    }
    counter++;
    Thread.sleep(50);
}

这是一个非常简单的、经过修改的示例,只是为了演示这个问题。我无法解决它。所有线程都将退出,并给出相同的异常。我正在aws上运行cassandra 3.11.4。我的所有节点都已启动并正在运行,我可以在后端很好地执行操作。

6jjcrrmo

6jjcrrmo1#

您可以在cassandra中执行nodetool status,并获得数据中心的名称。这就是你必须投入的价值 withLocalDatacenter 方法:

/opt/apache-cassandra-3.11.2/bin$ ./nodetool status
Datacenter:**dc1**
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address         Load       Tokens       Owns (effective)  Host ID    Rack
kmb7vmvb

kmb7vmvb2#

改变 .withLocalDatacenter("us-east-2").withLocalDatacenter("datacenter1") 然后重试。

相关问题