gpt4 book ai didi

sql - 使用语法错误更新 postgresql

转载 作者:行者123 更新时间:2023-11-29 13:58:59 30 4
gpt4 key购买 nike

我有一个名为 test 的表,它有 4 列:

id     INT
v_out INT
v_in INT
label CHARACTER

我正在尝试使用以下查询更新表格:

String sql = "
update
test
set
v_out = temp.outV
, v_in = temp.inV
, label = temp.label
from (
values
(1,234,235,'[abc]') // these value are read from other places
,(2,234,5585,'[def]') //[abc] = object.toString();
) as temp (e_id, outV, inV, label)
where
id = temp.e_id;

当我执行它时,我得到了错误:org.postgresql.util.PSQLException:错误:“[”处或附近的语法错误

在出现此错误之前,我已经更新了 3000 多行。

那么这是什么原因造成的呢?是因为“[”这个字符吗?这是原始表格:

create table edges(
id serial not null primary key,
vertex_out int,
vertex_in int,
label character varying(255),
constraint fk_vertex_out foreign key (vertex_out) references vertices(id) on delete cascade,
constraint fk_vertex_in foreign key (vertex_in) references vertices(id) on delete cascade
);

最佳答案

这里最有可能的问题是 SQL 查询中的字符串插值(这是一个非常的坏习惯)。

看这个例子:

  values
(1,234,235,'[abc]''),
(2,234,5585,'[def]')

第一个对象名称中的 ' 符号违反了字符串边界,导致 错误:第二行“[”: 处或附近的语法错误。

您可以在互联网上搜索SQL Injection 以获取有关此问题的详细信息。

关于sql - 使用语法错误更新 postgresql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25061815/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com