PostgreSQL插入数据报'malformed array literal'错误求助
问题原因
你在建表语句中使用的VARCHAR[30],在PostgreSQL里被解析为长度为30的VARCHAR数组类型,而非你预期的“最大长度30的普通字符串类型”。当你插入普通字符串时,数据库将其视为数组输入,但格式不符合数组要求,因此抛出数组字面量格式错误。
解决办法
根据你的实际需求选择以下方案:
方案1:修改表结构为普通字符串类型(推荐,若无需数组)
将建表语句中的方括号[]改为圆括号(),以此指定字符串的最大长度:
CREATE TABLE korisnici ( ime VARCHAR(30), prezime VARCHAR(30), location VARCHAR(30) );
如果表已创建,执行ALTER TABLE语句修改字段类型:
ALTER TABLE korisnici ALTER COLUMN ime TYPE VARCHAR(30), ALTER COLUMN prezime TYPE VARCHAR(30), ALTER COLUMN location TYPE VARCHAR(30);
修改完成后,原插入语句即可正常执行。
方案2:若需数组类型,按数组格式插入数据
如果字段确实需要存储数组,插入时需遵循PostgreSQL的数组语法,用{}包裹元素:
INSERT INTO korisnici ("ime","prezime","location") VALUES ('{name}','{lastname}','{location}');
也可以使用ARRAY构造函数:
INSERT INTO korisnici ("ime","prezime","location") VALUES (ARRAY['name'], ARRAY['lastname'], ARRAY['location']);
内容的提问来源于stack exchange,提问作者user22651739
相关产品推荐
相关产品推荐

