1 回答
TA贡献1880条经验 获得超4个赞
输入jsonb[]pgx 被破坏
至于你报告的错误信息:
"Severity": "ERROR",
"Code": "42804",
"Message": "wrong element type",
...
pgx 上的Guthub 页面显示:
二进制格式可以更快,这是 pgx 接口使用的。
所以你使用的是二进制协议。为此,数据类型必须使用兼容的二进制格式,并且似乎ARRAY of jsonb没有正确编码?有关的:
PostgreSQL/PostGIS - PQexecParams - 错误的元素类型
幸运的是,作者似乎昨天才解决了这个问题:(!)
jackc:修复 JSONBArray 以包含 JSONB 的元素
安装包含提交 79b05217d14ece98b13c69ba3358b47248ab4bbc 的最新版本后,您的问题应该会消失
jsonb[]与jsonb嵌套 JSON 数组相比
使用 plainjsonb而不是jsonb[]. JSON 可以自己嵌套数组。考虑:
SELECT '[{"id": 1}
, {"txt": "something"}]'::jsonb AS jsonb_array
, '{"{\"id\": 1}"
,"{\"txt\": \"something\"}"}'::jsonb[] AS pg_array_of_jsonb;
两者都可以在 Postgres 中取消嵌套:
SELECT jsonb_array_elements('[{"id": 1}, {"txt": "something"}]'::jsonb) AS jsonb_element_from_json_array;
SELECT unnest('{"{\"id\": 1}","{\"txt\": \"something\"}"}'::jsonb[]) AS jsonb_element_from_pg_array;
结果相同。
db<>在这里摆弄
这也应该避免你的错误。
附加错误
你的INSERT命令:
INSERT INTO user ("email", "password", "inventory") VALUES ...
...真的应该提出这个:
错误:“用户”处或附近的语法错误
因为user是保留字。您必须双引号才能使其正常工作。但不要将user其用作 Postgres 标识符。曾经。
表创建工作,因为那里的表名是模式限定的,这使得它明确:
CREATE TABLE public.user ( ...
- 1 回答
- 0 关注
- 102 浏览
添加回答
举报