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

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 _

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:06:11