You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.3 KiB
Go
67 lines
1.3 KiB
Go
2 years ago
|
package mysql
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
|
||
|
"github.com/pingcap/errors"
|
||
|
)
|
||
|
|
||
|
var (
|
||
|
ErrBadConn = errors.New("connection was bad")
|
||
|
ErrMalformPacket = errors.New("Malform packet error")
|
||
|
|
||
|
ErrTxDone = errors.New("sql: Transaction has already been committed or rolled back")
|
||
|
)
|
||
|
|
||
|
type MyError struct {
|
||
|
Code uint16
|
||
|
Message string
|
||
|
State string
|
||
|
}
|
||
|
|
||
|
func (e *MyError) Error() string {
|
||
|
return fmt.Sprintf("ERROR %d (%s): %s", e.Code, e.State, e.Message)
|
||
|
}
|
||
|
|
||
|
// NewDefaultError: default mysql error, must adapt errname message format
|
||
|
func NewDefaultError(errCode uint16, args ...interface{}) *MyError {
|
||
|
e := new(MyError)
|
||
|
e.Code = errCode
|
||
|
|
||
|
if s, ok := MySQLState[errCode]; ok {
|
||
|
e.State = s
|
||
|
} else {
|
||
|
e.State = DEFAULT_MYSQL_STATE
|
||
|
}
|
||
|
|
||
|
if format, ok := MySQLErrName[errCode]; ok {
|
||
|
e.Message = fmt.Sprintf(format, args...)
|
||
|
} else {
|
||
|
e.Message = fmt.Sprint(args...)
|
||
|
}
|
||
|
|
||
|
return e
|
||
|
}
|
||
|
|
||
|
func NewError(errCode uint16, message string) *MyError {
|
||
|
e := new(MyError)
|
||
|
e.Code = errCode
|
||
|
|
||
|
if s, ok := MySQLState[errCode]; ok {
|
||
|
e.State = s
|
||
|
} else {
|
||
|
e.State = DEFAULT_MYSQL_STATE
|
||
|
}
|
||
|
|
||
|
e.Message = message
|
||
|
|
||
|
return e
|
||
|
}
|
||
|
|
||
|
func ErrorCode(errMsg string) (code int) {
|
||
|
var tmpStr string
|
||
|
// golang scanf doesn't support %*,so I used a temporary variable
|
||
|
fmt.Sscanf(errMsg, "%s%d", &tmpStr, &code)
|
||
|
return
|
||
|
}
|