Cyb*_*urk 7 postgresql error-handling go
当我在postgres中收到错误时,我根本无法检索错误代码.
在我的程序测试中,我知道我会收到以下错误"pq:重复键值违反了唯一约束"associations_pkey"".
查看postgres文档,这很可能是pq错误代码23505.
我需要在Go程序中获取该数字,以便我可以检查不同类型的错误并以有用的方式响应最终用户.
但是,我似乎无法抓住Go中的错误代码,只显示错误消息.我的代码如下:
stmt, _ := DB.Prepare("INSERT INTO table (column_1) VALUES ($1)")
_, err = stmt.Exec("12324354")
if err != nil {
log.Println("Failed to stmt .Exec while trying to insert new association")
log.Println(err.Error())
fmt.Println(err.Code())
} else {
Render.JSON(w, 200, "New row was created succesfully")
}
Run Code Online (Sandbox Code Playgroud)
Ain*_*r-G 10
您需要键入断言错误类型*pq.Error:
pqErr := err.(*pq.Error)
log.Println(pqErr.Code)
Run Code Online (Sandbox Code Playgroud)
这写在文档中。如您所见,您可以通过以下方式提取它:
if err, ok := err.(*pq.Error); ok {
fmt.Println(err.Code)
}
Run Code Online (Sandbox Code Playgroud)
不要忘记从导入中删除下划线_ "github.com/lib/pq"。如您所见,err有很多有关该错误的信息(不仅有Code很多其他信息)。
请注意,您不能将它直接与某些代码进行比较(它是的ErrorCode type)。
因此,您必须将其转换为字符串并与字符串进行比较。
https://godoc.org/github.com/lib/pq#Error
| 归档时间: |
|
| 查看次数: |
4566 次 |
| 最近记录: |