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

如何查询Golang pq驱动返回的Postgres uuid无效输入错误的类型定义

Postgres UUID无效输入语法错误匹配方案

你遇到的pq: invalid input syntax for type uuid:...错误没有单独的预定义专属类型,原因是这类错误属于Postgres服务端返回的通用输入语法错误范畴,匹配逻辑如下:

  • Postgres返回的所有服务端错误都会携带标准SQLSTATE错误码,UUID无效输入语法对应的错误码为22P02,含义为「无效的类型文本表示」。
  • 如果你使用的是Go生态的lib/pq驱动,可以通过类型断言将错误转为*pq.Error结构体,读取Code字段匹配错误码,同时补充错误内容的uuid关键词判断避免误判,示例代码如下:
import (
    "github.com/lib/pq"
    "strings"
)

func handleDBError(err error) (isUUIDInvalid bool) {
    pqErr, ok := err.(*pq.Error)
    if !ok {
        return false
    }
    return pqErr.Code == "22P02" && strings.Contains(pqErr.Error(), "type uuid")
}

// 业务逻辑中调用
if err := db.QueryRow(...).Scan(...); err != nil {
    if handleDBError(err) {
        // 返回404响应
        return
    }
    // 其他错误走原有5xx逻辑
}
  • 如果你使用其他语言的Postgres驱动,逻辑完全一致:所有兼容PG协议的驱动都会透传SQLSTATE错误码,你只需要在对应驱动的错误结构体中找到错误码字段,结合uuid关键词判断即可实现精准匹配。

错误定义的来源

这个错误的规则定义在Postgres服务端的标准错误码体系中,不属于驱动层的预定义类型,所以你在Postgres客户端库中找不到对应的专属错误类型定义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:57:02