如何在 Linux Docker 上将 Ado.Net 客户端连接到我的 NuoDB

How do I connect an Ado.Net client to my NuoDB on Linux Docker

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

的 Nuget“NuoDb.Data.Client”

很遗憾,连接无法正常工作。

如果我选择端口 8888,当我打开连接时我的线程消失到无穷大。 为此,我尝试打开端口 48004 以访问管理容器。 这样我收到一条错误消息。

"System.IO.IOException: A connection attempt failed because the remote peer did not respond properly after a certain period of time, or the established connection was faulty because the connected host did not respond 172.18.0.4:48006, 172.18.0.4"

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

有谁知道我做错了什么吗?

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

提前致谢。

端口 8888 是您将从 nuocmd 等管理工具中使用的 REST 端口:它允许您 start/stop 引擎并执行其他管理命令。您不会将此端口用于 SQL 客户端(正如您发现的那样)。 SQL 客户端使用的正确端口是 48004。

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

您确实建议您打开这些端口,但从您的 post 中不清楚您是否遵循了您列出的文档页面上的所有说明。特别是,您是否能够使用 nuosql 命令行工具作为 described here 连接到数据库?我强烈建议您在尝试使用 Ado.Net.

等更复杂的客户端访问之前确保像这样的简单访问正常工作