javascript 托管在Docker连接上的Cassandra返回NoHostAvailableError或ECONNREFUSED

tzxcd3kk  于 2022-12-25  发布在  Java
关注(0)|答案(1)|浏览(124)

我有一个Cassandra数据库托管在Docker容器上,使用以下命令创建:第一个月
我创建了键空间、表、上传的数据等,所有这些在bash和cqlsh中都运行良好。
问题是,我已经尝试将它连接到我的节点应用程序一段时间了,我得到了NoHostAvailableError或ECONNREFUSED错误。我对使用docker和cassandra相当陌生,所以我不确定问题出在哪里。
到目前为止,我的index.js看起来是这样的:

const cassandra = require('cassandra-driver');

var client = new cassandra.Client({
    contactPoints: ['127.0.0.1:9842'],
    keyspace: 'hospital'
});

const query = 'SELECT * from rooms;'

client.execute(query)
    .then(result => console.log('RES: ', result.rows[0]));

在这里我得到了NoHostAvailableError:

无可用主机错误:尝试查询的所有主机均失败。尝试的第一台主机为127.0.0.1:9842:操作超时错误:主机127.0.0.1:9842在超时12000毫秒之前未回复

就像这样

const cassandra = require('cassandra-driver');

var client = new cassandra.Client({
    contactPoints: ['127.0.0.1'],
    keyspace: 'hospital'
});

const query = 'SELECT * from hospital.rooms;'

client.execute(query)
    .then(result => console.log('RES: ', result.rows[0]));

在这里我得到了ECONNREFUSED错误:

无可用主机错误:尝试查询的所有主机均失败。尝试的第一台主机为127.0.0.1:9042:错误:连接后在TCP连接包裹处连接ECONREFUSED 127.0.0.1:9042 [as oncomplete]

它们之间唯一不同的是第一个端口的定义。
另外,这个网站上还有一个题目完全一样的问题。我已经按照上面的建议做了,但是还是不行。我做错了什么?

olmpazwi

olmpazwi1#

默认情况下,Cassandra监听端口9042,这是在.yml文件中配置的。
我建议使用默认值进行测试。
将Docker命令更改为:
Docker 运行-d -名称Cassandra- Docker -p 9042:9042Cassandra

相关问题