如何识别Go中MySQL执行的错误号?

时间:2018-09-06 04:07:21

标签: mysql go

stmt, err := db.Prepare("SQL Stuff")
    if err != nil {
        log.Fatal(err)
    }
res, err := stmt.Exec(add a variable)
    if err != nil {
        log.Fatal(err)
    }

这是我目前在Go中处理基于MySQL的错误的方式。

当我遇到SQL命令故障或其他错误时,表示“ if”,并将错误正确打印到结束程序的控制台。

我知道我看到控制台显示的错误编号是:https://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html

因此,我认为抛出的错误本身内部包含数字。我想回应“该行存在”或“不是唯一值”之类的情况,因为在某些情况下,我会对此做出回应。

是否有一种简洁的方法来识别错误号是什么?

1 个答案:

答案 0 :(得分:3)

这取决于您使用的MySQL驱动程序。如果它是github.com/go-sql-driver/mysql,那么它将在MySQLError type中公开错误号。您可以执行以下操作:

if merr, ok := err.(*mysql.MySQLError); ok {
    // This is an error from MySQL. Use merr.Number as the error number
} else {
    // This error isn't necessarily from MySQL. Usual error processing
}