【发布时间】:2018-11-21 11:35:10
【问题描述】:
我有以下java代码:
String serverIP = "127.0.0.1";
String keyspace = "testkeyspace";
Cluster cluster = Cluster.builder().addContactPoints(serverIP).build();
Session session = cluster.connect(keyspace);
我试图用它来检查我与 Cassandra 的连接。
我在自己的机器上本地安装了 Cassandra,并且连接成功。 我的 maven 项目正在使用以下
弹簧数据卡桑德拉 2.0.6.发布
但是,当我尝试将我的 java 应用程序连接到由 docker 运行的 Cassandra 时(我的本地 cassandra 已停止),我遇到以下错误:
尝试查询的所有主机都失败(尝试:/127.0.0.1:9042 (com.datastax.driver.core.exceptions.TransportException: [/127.0.0.1:9042] 无法连接))
我不知道我的 IP 是否错误,但是在我的 docker CQLSH 上,每当我打开我的 CQLSH 时都会写入以下消息:
在 127.0.0.1:9042 连接到测试集群。 [cqlsh 5.0.1 |卡桑德拉 3.11.2 | CQL 规范 3.4.4 |本机协议 v4] 使用 HELP 寻求帮助。
请帮忙,我一定在这里错过了什么。谢谢!
【问题讨论】:
-
检查你的帖子,因为你有不同的 ip: 172 和 127... 这很混乱
-
你有没有暴露 Cassandra Docker 容器的端口?
docker run -p [host_port]:[cassandra_port]? -
对不起。它实际上是 127。:p 我正在尝试不同的 IP,这就是为什么.. 但通常它的 127.0.0.1
-
@Mornor 我应该在 [host_port]:[cassandra_port] 上写什么?我应该写吗, docker run -p 8080:8080
-
我不知道 Cassandra 默认使用哪个端口。从您的帖子来看,似乎是
:9042。所以 Docker 命令应该类似于:docker run -p 10080:9042 cassandra:latest。然后,您将能够通过localhost:10080访问 Cassandra
标签: java docker cassandra database-connection