我试图通过asyncpgapi使用查询参数在postgresql数据库的表中插入值。 我创建了这样的表:
CREATE TABLE my_table
(
cat BIGINT,
roles BIGINT ARRAY
);
我已经尝试过像这样在BIGINT中直接转换参数:$1:BIGINT
,但是我得到了相同的错误
cat是int,roles是int数组
它应该将cat和roles插入到我的表中,但是我得到了错误:syntax error at or near "$1"
我提供数据库的日志以防万一
2019-01-26 21:01:22 UTC:172.31.36.115(37598):Barbote@Barbotedb:[15082]:ERROR: syntax error at or near "$1" at character 111
2019-01-26 21:01:22 UTC:172.31.36.115(37598):Barbote@Barbotedb:[15082]:STATEMENT:
INSERT INTO "429792212016955423"(cat, roles)
VALUES($1 $2)
ON CONFLICT ($1)
DO UPDATE SET roles = array_append(roles, $2);
您需要一个主键(或唯一列)才能使用
ON CONFLICT
,因此必须将表定义为列
^{pr2}$roles
在UPDATE
中不明确,请通过指定表名修复它:注意,函数
array_append()
向数组追加一个元素。您可以改为使用array_cat()
。但是,它可能会导致在单个数组中出现重复的元素。如果您的目标是在数组中有不同的元素,那么应该在Postgres中定义一个自定义函数:并使用它来代替
array_cat()
。在相关问题 更多 >
编程相关推荐