You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL向JSON类型字段插入数据失败问题求助

PostgreSQL JSON字段插入数组值的正确方法

你的INSERT语句失败主要有两个原因:

  1. 表定义中password字段为NOT NULL,但你未在INSERT中提供该字段的值
  2. 直接将PostgreSQL数组强制转为JSON的方式错误,会生成不符合预期的JSON格式

正确的插入方式

以下几种方法都可以插入符合要求的JSON数组:

方法1:直接使用JSON数组字符串

INSERT INTO myschema."user" (username, roles, password) 
VALUES ('brk', '["ROLE_USER", "ROLE_ADMIN", "ROLE_SUPER_ADMIN"]'::json, 'your_secure_password');

方法2:使用json_build_array函数

该函数会直接将传入的参数构建为JSON数组:

INSERT INTO myschema."user" (username, roles, password) 
VALUES ('brk', json_build_array('ROLE_USER', 'ROLE_ADMIN', 'ROLE_SUPER_ADMIN'), 'your_secure_password');

方法3:使用array_to_json函数(PostgreSQL 9.5+)

如果需要基于PostgreSQL数组转换,使用该函数可以正确转为JSON数组:

INSERT INTO myschema."user" (username, roles, password) 
VALUES ('brk', array_to_json(ARRAY['ROLE_USER', 'ROLE_ADMIN', 'ROLE_SUPER_ADMIN']), 'your_secure_password');

验证插入结果

插入完成后,可以用以下语句验证roles字段的格式是否正确:

SELECT roles FROM myschema."user" WHERE username = 'brk';

预期结果应为:

["ROLE_USER", "ROLE_ADMIN", "ROLE_SUPER_ADMIN"]

内容的提问来源于stack exchange,提问作者BernardA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 07:49:54