英文:
Best way to handling MySQL 1045 Error in Golang
问题
我有一个控制MYSQL错误1045的代码,
res, err := stmt.Exec(Status, Message, Number)
if err != nil {
if err.(*mysql.MySQLError).Number == 1045 {
log.Error(err)
stmt.Close()
DatabaseErrorHandling() // 用于重新连接数据库
return false
} else {
log.Error(err)
return true
}
}
但是出现了这样的错误
panic: 接口转换: 错误是*errors.errorString,而不是*mysql.MySQLError
有没有类似的代码可以工作?
有没有办法处理这个错误?
英文:
I have a code that control MYSQL Error 1045,
res, err := stmt.Exec(Status, Message, Number)
if err != nil {
if err.(*mysql.MySQLError).Number == 1045 {
log.Error(err)
stmt.Close()
DatabaseErrorHandling() // used for reCONNECT database
return false
} else {
log.Error(err)
return true
}
}
But Error happened like that
panic: interface conversion: error is *errors.errorString, not *mysql.MySQLError
Is there code working like that ?
Any way to handle this error ?
答案1
得分: 3
这个失败是因为错误类型不是你所期望的类型。使用errors.As
来验证和转换错误:
var dbErr *mysql.MySQLError
if errors.As(err, &dbErr) {
// 在这里处理 dbErr
} else {
// 不是 dbErr。在这里处理 err
}
英文:
This is failing because the error is not of the type you expect. Use errors.As
to verify and convert the error:
var dbErr *mysql.MySQLError
if errors.As(err,&dbErr) {
// Handle dbErr here
} else {
// Not a dbErr. Deal with err here.
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论