1

我使用NuoDB 指令为 NuoDB 创建了 3 个必要的容器。我的 Docker 环境在虚拟 Ubuntu Linux 环境 (VMware) 上运行。之后我尝试使用控制台应用程序(C# .Net Framework 4.8)和 Ado.Net 技术访问数据库。为此,我使用了来自 Nuget.org 的 Nuget“NuoDb.Data.Client”。

不幸的是,连接不起作用。

如果我选择端口 8888,当我打开连接时,我的线程会消失到无穷大。出于这个原因,我尝试打开端口 48004 以访问管理容器。通过这种方式,我收到一条错误消息。

“System.IO.IOException:连接尝试失败,因为远程对端在一定时间后没有正确响应,或者建立的连接失败,因为连接的主机没有响应172.18.0.4:48006,172.18.0.4”

有趣的是,如果我指定了错误的数据库名称,它会引发错误:没有为数据库找到合适的事务引擎。这告诉我它连接到管理容器。

有谁知道我做错了什么?

当我与工具“ dbvisualizer ”建立连接时,连接有效。该工具直接访问事务引擎。为此我在对应的容器中打开了 48006 端口。但即使使用这些设置,它也不适用于我的控制台应用程序。

提前致谢。

4

1 回答 1

1

端口 8888 是您将从管理工具中使用的 REST 端口,例如nuocmd:它允许您启动/停止引擎并执行其他管理命令。您不会将此端口用于 SQL 客户端(如您所见)。用于 SQL 客户端的正确端口是 48004。

端口 48004 允许 SQL 客户端连接到“负载平衡器”设施,该设施会将其重定向到正在运行的 TE 之一。SQL 流量并非通过此负载均衡器路由:相反,负载均衡器使用其中一个 TE 的地址/端口回复客户端,然后客户端将断开与负载均衡器的连接并直接重新连接到TE 在该地址/端口。因此, TE 监听的所有端口也必须对客户端开放,而不仅仅是 48004。

您确实建议您打开这些端口,但从您的帖子中不清楚您是否遵循了您列出的文档页面上的所有说明。特别是,您是否能够使用此处nuosql所述的命令行工具连接到数据库?我强烈建议您在尝试更复杂的客户端访问(例如使用 Ado.Net)之前确保像这样的简单访问正常工作。

于 2022-01-17T22:34:14.827 回答