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

问题描述 投票:1回答:1
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

所以我认为抛出的错误本身就有数字。我想回应“行存在”或“不是唯一值”等情况,因为在某些情况下我会对它们做出回应。

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

mysql go
1个回答
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
}
© www.soinside.com 2019 - 2024. All rights reserved.