Node pg update multiple rows in one query (error: operator does not exist: text = integer)
Node pg update multiple rows in one query (error: operator does not exist: text = integer)
我有以下查询:
UPDATE test_schema.test_table as t SET
test_row_value2 = c.test_row_value2
FROM (values
(, , ), (, , )
) as c(id, test_row_value1, test_row_value2)
WHERE c.id = t.id
AND c.test_row_value1 = t.test_row_value1
RETURNING *
我的参数如下:
[
72,
'table_name',
'test_table',
'database_name',
'test_database'
]
当我运行使用节点pg(版本8.7.3)进行查询时,出现以下错误:
error: operator does not exist: text = integer
根据我的测试,我发现这是由于以下几行造成的:
test_row_value2 = c.test_row_value2
c.id = t.id
c.test_row_value1 = t.test_row_value1
如果我对上述行的右侧进行参数化,我不会收到错误,但也不会更新任何内容。我 运行 在 PGAdmin 中使用硬编码值进行查询,并且查询工作正常并且所有内容都正确更新。我在节点 pg 中做错了什么?
我不得不更改这部分查询:
c.id = t.id
以下内容:
c.id = t.id::int
注意 ::int
部分。我不确定为什么节点 pg 需要强制转换,但现在一切似乎都运行良好。
我有以下查询:
UPDATE test_schema.test_table as t SET
test_row_value2 = c.test_row_value2
FROM (values
(, , ), (, , )
) as c(id, test_row_value1, test_row_value2)
WHERE c.id = t.id
AND c.test_row_value1 = t.test_row_value1
RETURNING *
我的参数如下:
[
72,
'table_name',
'test_table',
'database_name',
'test_database'
]
当我运行使用节点pg(版本8.7.3)进行查询时,出现以下错误:
error: operator does not exist: text = integer
根据我的测试,我发现这是由于以下几行造成的:
test_row_value2 = c.test_row_value2
c.id = t.id
c.test_row_value1 = t.test_row_value1
如果我对上述行的右侧进行参数化,我不会收到错误,但也不会更新任何内容。我 运行 在 PGAdmin 中使用硬编码值进行查询,并且查询工作正常并且所有内容都正确更新。我在节点 pg 中做错了什么?
我不得不更改这部分查询:
c.id = t.id
以下内容:
c.id = t.id::int
注意 ::int
部分。我不确定为什么节点 pg 需要强制转换,但现在一切似乎都运行良好。