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.
go-zero/core/stores/sqlx/mysql.go

38 lines
650 B
Go

4 years ago
package sqlx
import "github.com/go-sql-driver/mysql"
const (
mysqlDriverName = "mysql"
duplicateEntryCode uint16 = 1062
)
func NewMysql(datasource string, opts ...SqlOption) SqlConn {
opts = append(opts, withMysqlAcceptable())
return NewSqlConn(mysqlDriverName, datasource, opts...)
}
func mysqlAcceptable(err error) bool {
if err == nil {
return true
}
myerr, ok := err.(*mysql.MySQLError)
if !ok {
return false
}
switch myerr.Number {
case duplicateEntryCode:
return true
default:
return false
}
}
func withMysqlAcceptable() SqlOption {
return func(conn *commonSqlConn) {
conn.accept = mysqlAcceptable
}
}