登录
首页 >  Golang >  Go问答

如何解析 MySQL 错误

来源:Golang技术栈

时间:2023-04-26 12:14:18 225浏览 收藏

“纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《如何解析 MySQL 错误》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!

问题内容

我正在尝试解析 MySQL 错误,以便从 Go API 向用户返回干净的错误消息。

我读了一些类似[这篇](https://stackoverflow.com/questions/34008600/handle-a-specific- error-in-golang)文章,显示了我想做的事情,但看起来我正在使用的模块go-mysql- driver不支持 parseError。

举一个具体的例子,有错误:

Error 1062: Duplicate entry 'John' for key 'name_UNIQUE'

我希望能够构建一个数据结构,使我能够组织信息以返回用户友好的消息,例如

Error with the field 'name': 'John' already exist"

所以我还可以将它翻译成不同的语言,并将准备使用的错误消息发送回客户端。

谢谢!

正确答案

我在[packet.go](https://github.com/go-sql- driver/mysql/blob/4ac31a97ccff97de60ba3c630bfb4733c1bb6d0e/packets.go#L543)和[driver_test.go中发现了一些提示](https://github.com/go- sql- driver/mysql/blob/8f6c67f0228a4a6a962008d6c3d1e694e4532e71/driver_test.go#L1157)

例子:

me, ok := err.(*mysql.MySQLError)
if !ok {
    return err
}
if me.Number == 1062 {
    return errors.New("It already exists in a database.")
}
return err

的可能值me.Number可以在[mysql 文档中找到](https://dev.mysql.com/doc/mysql- errors/8.0/en/server-error-reference.html)

到这里,我们也就讲完了《如何解析 MySQL 错误》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于golang的知识点!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>