Postgres 节点常见问题#
以下是使用 Postgres 节点时可能遇到的常见错误和问题,以及相应的解决或排查步骤。
使用参数动态填充 SQL IN
分组#
在 Postgres 中,您可以使用 SQL 的 IN
比较结构来进行值组之间的比较:
1 |
|
虽然您可以在查询中使用 n8n 表达式来动态填充 IN
分组中的值,但结合使用查询参数能通过自动清理输入提供额外保护。
要构建带有查询参数的 IN
分组查询:
- 将 Operation 设置为 Execute Query。
- 在 Options 中,选择 Query Parameters。
- 使用表达式从输入数据中选择一个数组。例如:
{{ $json.input_shirt_sizes }}
。 - 在 Query 参数中,编写带有空括号的
IN
结构查询。例如:1
SELECT color, shirt_size FROM shirts WHERE shirt_size IN ();
- 在
IN
括号内,使用表达式为查询参数数组中的项目数量动态创建基于索引的占位符(如$1
、$2
和$3
)。由于占位符变量是从 1 开始索引的,您可以通过将每个数组索引加一来实现:1
SELECT color, shirt_size FROM shirts WHERE shirt_size IN ({{ $json.input_shirt_sizes.map((i, pos) => "$" + (pos+1)).join(', ') }});
通过这种技术,n8n 会根据数组中的项目数量自动为 IN
值创建正确数量的预处理语句占位符。
处理时间戳和时区#
为避免 n8n 和 Postgres 在解释时间戳和时区数据时产生复杂问题,请遵循以下通用建议: