PostgreSQL向自定义类型列内的数组插入元素报错如何解决?
问题原因
你的t_localitzacio是包含nom_localitzacio字段的自定义复合类型,t_pais的localitzacions字段要求存储t_localitzacio类型的数组,但你插入语句中数组元素直接传入了普通字符串,PostgreSQL无法自动将字符串转换为t_localitzacio复合类型,因此抛出格式错误。
解决方案
修改插入语句,将数组内的每个字符串转换为t_localitzacio类型即可,有两种常用写法:
- 显式构造每个复合类型元素(可读性更高,适配所有复合类型场景)
INSERT INTO pais(pais) VALUES (ROW ( 'Espanya', ARRAY[ ROW('Barcelona')::t_localitzacio, ROW('Madrid')::t_localitzacio, ROW('Sevilla')::t_localitzacio ] )::t_pais);
- 数组整体强转(写法更简洁,适配单字段复合类型场景)
INSERT INTO pais(pais) VALUES (ROW ( 'Espanya', ARRAY['Barcelona', 'Madrid', 'Sevilla']::t_localitzacio[] )::t_pais);
内容的提问来源于stack exchange,提问作者UriPlayZz _
相关产品推荐
相关产品推荐

