如何在Go语言中获取SQL插入操作的错误详情?
获取PostgreSQL详细错误信息(Go语言pq驱动)
Go语言中使用pq驱动操作PostgreSQL时,直接打印err只会输出简化的错误信息,但实际上驱动返回的错误是*pq.Error类型,包含了完整的PostgreSQL错误元数据,包括你需要的DETAIL字段。
只需要对错误进行类型断言,就能提取详细信息:
import ( "log" "github.com/lib/pq" ) // ... 你的数据库操作代码 _, err := db.Exec(query, params...) if err != nil { // 断言为pq.Error类型 if pqErr, ok := err.(*pq.Error); ok { log.Printf("插入失败: %s\n约束名: %s\n详细信息: %s", pqErr.Message, pqErr.Constraint, pqErr.Detail) } else { // 非pq驱动错误,直接打印 log.Print(err) } }
*pq.Error类型还包含其他实用字段:
Code:PostgreSQL标准错误码(例如外键约束违反对应23503)Table:触发约束的表名Column:涉及的字段名(如果有)
运行修改后的代码,就能得到和pgAdmin中一致的DETAIL错误信息。
内容的提问来源于stack exchange,提问作者Richy
相关产品推荐
相关产品推荐

