MySQL 节点常见问题#
以下是 MySQL 节点 的一些常见错误和问题,以及解决或排除它们的步骤。
通过复合键更新行#
MySQL 节点的更新操作允许您通过提供匹配的列和值来更新表中的行。这适用于单列值可以唯一标识各个行的表。
您不能将此模式用于使用复合键的表,在这种情况下,您需要多个列来唯一标识一行。一个例子是 mysql
数据库中 MySQL 的 user
表,您需要 user
和 host
列来唯一标识行。
要更新具有复合键的表,请使用执行 SQL操作手动编写查询。在那里,您可以匹配多个值,就像这个同时匹配 customer_id
和 product_id
的示例:
1 |
|
在使用 Docker 时无法连接到本地 MySQL 服务器#
当您在 Docker 中运行 n8n 或 MySQL 时,您需要配置网络,以便 n8n 可以连接到 MySQL。
解决方案取决于您如何托管这两个组件。
如果只有 MySQL 在 Docker 中#
如果只有 MySQL 在 Docker 中运行,请通过在容器内部绑定到 0.0.0.0
来配置 MySQL 侦听所有接口(官方镜像已经这样配置了)。
在运行容器时,使用 -p
标志发布端口。默认情况下,MySQL 在端口 3306 上运行,所以您的 Docker 命令应该如下所示:
1 |
|
在配置 MySQL 凭证时,localhost
地址应该没有问题(将主机设置为 localhost
)。
如果只有 n8n 在 Docker 中#
如果只有 n8n 在 Docker 中运行,请通过在主机上绑定到 0.0.0.0
来配置 MySQL 侦听所有接口。
如果您在 Linux 上的 Docker 中运行 n8n,请在启动容器时使用 --add-host
标志将 host.docker.internal
映射到 host-gateway
。例如:
1 |
|
如果您使用的是 Docker Desktop,这会为您自动配置。
在配置 MySQL 凭证时,使用 host.docker.internal
作为主机地址而不是 localhost
。
如果 MySQL 和 n8n 在单独的 Docker 容器中运行#
如果 n8n 和 MySQL 都在单独的 Docker 容器中运行,您可以使用 Docker 网络来连接它们。
通过在容器内部绑定到 0.0.0.0
来配置 MySQL 侦听所有接口(官方镜像已经这样配置了)。将 MySQL 和 n8n 容器都添加到同一个用户定义的桥接网络中。
在配置 MySQL 凭证时,使用 MySQL 容器的名称作为主机地址而不是 localhost
。例如,如果您将 MySQL 容器命名为 my-mysql
,您将把主机设置为 my-mysql
。
如果 MySQL 和 n8n 在同一个 Docker 容器中运行#
如果 MySQL 和 n8n 在同一个 Docker 容器中运行,localhost
地址不需要任何特殊配置。您可以配置 MySQL 侦听 localhost
并在 n8n 中的 MySQL 凭证中配置主机使用 localhost
。
小数作为字符串返回#
默认情况下,MySQL 节点将 DECIMAL
值作为字符串返回。这是有意为之的,以避免由于 JavaScript 表示数字的方式的限制而可能发生的精度损失。您可以在 n8n 使用的 MySQL 库的文档中了解更多关于这一决定的信息。
要将小数值作为数字而不是字符串输出并忽略精度损失的风险,请启用将小数输出为数字选项。这将将值作为数字而不是字符串输出。
作为替代方案,您可以使用 toFloat()
函数和 toFixed()
或在 MySQL 节点之后使用编辑字段(Set)节点手动从字符串转换为小数。请注意,您仍然可能需要考虑潜在的精度损失。
🚀 与作者交流

📚 教程 💡 案例 🔧 技巧

⚡ 快答 🎯 定制 🚀 支持