首页 > 解决方案 > 连接 Node Red 和 MySQL docker 容器

问题描述

我有两个单独的 docker 容器,一个运行 Node Red,一个运行 MySQL。我使用节点红色的 contrib-mssql-plus-box 插件在节点红色容器中创建一个节点。我在 MySQL 容器上有一个表,其中包含一些名为 TimeData 的数据。

然后,我将 Node Red 节点链接到容器 IP 地址,就像 docker 中的默认桥接网络一样,并带有相关的登录详细信息。

在 MSSQL 节点中,我有以下代码:

SELECT TOP 1 * FROM TimeData;

我尝试将其写入正常的调试节点(请参见下面的布局)。但是,当我尝试这个时,我的节点红色容器崩溃并出现以下错误:

18 Nov 13:56:28 - [red] Uncaught Exception:
18 Nov 13:56:28 - RangeError [ERR_BUFFER_OUT_OF_BOUNDS]: Attempt to write outside buffer bounds
    at boundsError (internal/buffer.js:47:11)
    at Buffer.readUInt8 (internal/buffer.js:213:5)
    at Packet.isLast (/data/node_modules/tedious/lib/packet.js:112:29)
    at ReadablePacketStream.<anonymous> (/data/node_modules/tedious/lib/message-io.js:91:18)
    at ReadablePacketStream.emit (events.js:198:13)
    at addChunk (/data/node_modules/readable-stream/lib/_stream_readable.js:291:12)
    at readableAddChunk (/data/node_modules/readable-stream/lib/_stream_readable.js:278:11)
    at ReadablePacketStream.Readable.push (/data/node_modules/readable-stream/lib/_stream_readable.js:245:10)
    at ReadablePacketStream.Transform.push (/data/node_modules/readable-stream/lib/_stream_transform.js:148:32)
    at ReadablePacketStream._transform (/data/node_modules/tedious/lib/message-io.js:57:16)

我不确定为什么我会在这里收到外部缓冲区边界错误?是我的 MySQL 查询还是我的容器设置导致了这种情况?

在此处输入图像描述

标签: mysqldockernode-red

解决方案


您似乎使用了错误的节点 MySQL != MSSQL。

您正在使用 MS SQL 节点(用于 Microsoft 数据库)与 MySQL 通信。这只是行不通。

您需要安装一个 MySQL 节点,例如https://flows.nodered.org/node/node-red-node-mysql


推荐阅读