我有一个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]
它们之间唯一不同的是第一个端口的定义。
另外,这个网站上还有一个题目完全一样的问题。我已经按照上面的建议做了,但是还是不行。我做错了什么?
1条答案
按热度按时间olmpazwi1#
默认情况下,Cassandra监听端口9042,这是在.yml文件中配置的。
我建议使用默认值进行测试。
将Docker命令更改为:
Docker 运行-d -名称Cassandra- Docker -p 9042:9042Cassandra