Skip to content

MySQL 节点常见问题

以下是MySQL 节点的一些常见错误和问题以及解决或排除故障的步骤。

通过组合键更新行

MySQL 节点的“更新”操作允许您通过提供要匹配的列和值来更新表中的行。这适用于单列值可以唯一标识各行的表。

对于使用复合键的表,您不能使用此模式,因为复合键需要多个列来唯一地标识一行。MySQL 数据库中的就是一个例子,您需要同时使用和列来唯一地标识一行。

要使用组合键更新表,请使用执行 SQL操作手动编写查询。这样,您可以匹配多个值,例如本例中同时匹配和:

1
UPDATE orders SET quantity = 3 WHERE customer_id = 538 AND product_id = 800;

使用 Docker 时无法连接到本地 MySQL 服务器

当您在 Docker 中运行 n8n 或 MySQL 时,您需要配置网络以便 n8n 可以连接到 MySQL。

解决方案取决于您如何托管这两个组件。

如果 Docker 中只有 MySQL

如果 Docker 中只运行 MySQL,则通过绑定到容器内部来配置 MySQL 监听所有接口(官方镜像已经这样配置了)。

运行容器时,请使用标志发布端口。默认情况下,MySQL 在端口 3306 上运行,因此您的 Docker 命令应如下所示:

1
docker run -p 3306:3306 --name my-mysql -d mysql:latest

配置MySQL 凭据时,地址应该可以正常工作(将主机设置为)。

如果 Docker 中只有 n8n

如果 Docker 中仅运行 n8n,则通过绑定到主机来配置 MySQL 以监听所有接口。

如果您在Linux上的 Docker 中运行 n8n ,请在启动容器时使用标志进行映射。例如:

1
docker run -it --rm --add-host host.docker.internal:host-gateway --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n

如果您正在使用 Docker Desktop,它将自动为您配置。

配置MySQL 凭据时,使用作为主机地址,而不是。

如果 MySQL 和 n8n 在单独的 Docker 容器中运行

如果 n8n 和 MySQL 都在 Docker 中的单独容器中运行,则可以使用 Docker 网络连接它们。

通过绑定到容器内部,配置 MySQL 监听所有网络接口(官方镜像已按此方式配置)。将 MySQL 和 n8n 容器添加到同一个用户自定义桥接网络

配置MySQL 凭据时,请使用 MySQL 容器的名称作为主机地址,而不是。例如,如果您调用 MySQL 容器,则应将Host设置为。

如果 MySQL 和 n8n 在同一个 Docker 容器中运行

如果 MySQL 和 n8n 在同一个 Docker 容器中运行,则该地址不需要任何特殊配置。您可以配置 MySQL 进行监听,并在n8n 的 MySQL 凭据中配置要使用的主机

以字符串形式返回的十进制数

默认情况下,MySQL 节点会以字符串形式返回。这样做是为了避免 JavaScript 表示数字的方式限制可能导致的精度损失。您可以在n8n 使用的MySQL 库文档中了解更多关于此决策的信息。

要将小数值输出为数字而非字符串,并忽略精度损失的风险,请启用“将小数输出为数字”选项。这将使小数输出为数字而非字符串。

或者,您可以使用带有函数的函数,或在 MySQL 节点后使用“编辑字段(设置)”节点,手动将字符串转换为十进制数。请注意,您可能仍需要考虑潜在的精度损失。