我阅读了有关错误处理的官方指南
我应用了它
err := db.connection.QueryRow("INSERT INTO articles(uri) VALUES ($1)", article.URI).Scan()
if err != nil {
var pgErr *pgconn.PgError
if errors.As(err, &pgErr) {
fmt.Println(pgErr.Message) // => syntax error at end of input
fmt.Println(pgErr.Code) // => 42601
}
}
代码不起作用,我的应用程序不打印任何内容。但是postgres日志有ERROR: duplicate key value violates unique constraint "articles_uri_key"
好的,我可以使用标准的 golang 方法:
err := db.connection.QueryRow("INSERT INTO articles(uri) VALUES ($1)", article.URI).Scan()
if err != nil {
fmt.Println(err)
}
no rows in result set
一个问题,它在 postgres 日志中没有错误时打印。
我尝试替换
if err != nil
为if err != errors.New("no rows in result set")
,
它仍然打印no rows in result set