mysql - 连接 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 查询还是我的容器设置导致了这种情况?
解决方案
您似乎使用了错误的节点 MySQL != MSSQL。
您正在使用 MS SQL 节点(用于 Microsoft 数据库)与 MySQL 通信。这只是行不通。
您需要安装一个 MySQL 节点,例如https://flows.nodered.org/node/node-red-node-mysql
推荐阅读
- mysql - SQL 通过连接 2 个表来验证列
- haskell - 在 Haskell 中使用地图
- java - reactor.core.publisher.FluxFilter$FilterSubscriber.onNext 的线程“main”java.lang.NullPointerException 中的异常
- gcc - cuda-7.5 未定义标识符“__shfl_down”
- c# - 按下按钮时尝试使用 fillAmount 填充重新加载栏
- c# - 何时使用 Task.Run().GetAwaiter().GetResult() 和 ().GetAwaiter.GetResult()?
- pycharm - 在 PyCharm 中,是否可以通过粘贴将文本连接到现有环境变量中?
- kubernetes - 使用 LB 和入口设置 Kubernetes
- android - 错误:javax.net.ssl.SSLHandshakeException - Nativescript
- javascript - 使用套接字 io 将数据传递给 html 表