1 回答

TA貢獻(xiàn)1880條經(jīng)驗 獲得超4個贊
輸入jsonb[]pgx 被破壞
至于你報告的錯誤信息:
"Severity": "ERROR",
"Code": "42804",
"Message": "wrong element type",
...
pgx 上的Guthub 頁面顯示:
二進(jìn)制格式可以更快,這是 pgx 接口使用的。
所以你使用的是二進(jìn)制協(xié)議。為此,數(shù)據(jù)類型必須使用兼容的二進(jìn)制格式,并且似乎ARRAY of jsonb沒有正確編碼?有關(guān)的:
PostgreSQL/PostGIS - PQexecParams - 錯誤的元素類型
幸運(yùn)的是,作者似乎昨天才解決了這個問題:(!)
jackc:修復(fù) JSONBArray 以包含 JSONB 的元素
安裝包含提交 79b05217d14ece98b13c69ba3358b47248ab4bbc 的最新版本后,您的問題應(yīng)該會消失
jsonb[]與jsonb嵌套 JSON 數(shù)組相比
使用 plainjsonb而不是jsonb[]. JSON 可以自己嵌套數(shù)組??紤]:
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;
結(jié)果相同。
db<>在這里擺弄
這也應(yīng)該避免你的錯誤。
附加錯誤
你的INSERT命令:
INSERT INTO user ("email", "password", "inventory") VALUES ...
...真的應(yīng)該提出這個:
錯誤:“用戶”處或附近的語法錯誤
因為user是保留字。您必須雙引號才能使其正常工作。但不要將user其用作 Postgres 標(biāo)識符。曾經(jīng)。
表創(chuàng)建工作,因為那里的表名是模式限定的,這使得它明確:
CREATE TABLE public.user ( ...
- 1 回答
- 0 關(guān)注
- 118 瀏覽
添加回答
舉報