实现单体实例安装工具

This commit is contained in:
GoEdgeLab
2024-01-29 17:57:01 +08:00
parent 12fd8b80b0
commit d6ff39966b
12 changed files with 1333 additions and 18 deletions

View File

@@ -5,7 +5,6 @@ import (
"github.com/TeaOSLab/EdgeAPI/internal/goman"
"github.com/TeaOSLab/EdgeAPI/internal/remotelogs"
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
"github.com/go-sql-driver/mysql"
_ "github.com/go-sql-driver/mysql"
"github.com/iwind/TeaGo/Tea"
"github.com/iwind/TeaGo/dbs"
@@ -759,10 +758,5 @@ func (this *MetricStatDAO) canIgnore(err error) bool {
}
// 忽略 Error 1213: Deadlock found 错误
mysqlErr, ok := err.(*mysql.MySQLError)
if ok && mysqlErr.Number == 1213 {
return true
}
return false
return CheckSQLErrCode(err, 1213)
}

View File

@@ -4,7 +4,6 @@ import (
"github.com/TeaOSLab/EdgeAPI/internal/goman"
"github.com/TeaOSLab/EdgeAPI/internal/remotelogs"
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
"github.com/go-sql-driver/mysql"
_ "github.com/go-sql-driver/mysql"
"github.com/iwind/TeaGo/Tea"
"github.com/iwind/TeaGo/dbs"
@@ -289,10 +288,5 @@ func (this *MetricSumStatDAO) canIgnore(err error) bool {
}
// 忽略 Error 1213: Deadlock found 错误
mysqlErr, ok := err.(*mysql.MySQLError)
if ok && mysqlErr.Number == 1213 {
return true
}
return false
return CheckSQLErrCode(err, 1213)
}

View File

@@ -1,6 +1,7 @@
package models
import (
"errors"
"github.com/go-sql-driver/mysql"
"github.com/iwind/TeaGo/dbs"
"github.com/iwind/TeaGo/types"
@@ -60,8 +61,8 @@ func CheckSQLErrCode(err error, code uint16) bool {
}
// 快速判断错误方法
mysqlErr, ok := err.(*mysql.MySQLError)
if ok && mysqlErr.Number == code { // Error 1050: Table 'xxx' already exists
var mysqlErr *mysql.MySQLError
if errors.As(err, &mysqlErr) && mysqlErr.Number == code { // Error 1050: Table 'xxx' already exists
return true
}
@@ -86,6 +87,6 @@ func IsMySQLError(err error) bool {
if err == nil {
return false
}
_, ok := err.(*mysql.MySQLError)
return ok
var mysqlErr *mysql.MySQLError
return errors.As(err, &mysqlErr)
}

View File

@@ -0,0 +1,39 @@
// Copyright 2024 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
package models_test
import (
"errors"
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
"github.com/iwind/TeaGo/assert"
"github.com/iwind/TeaGo/dbs"
"testing"
)
func TestIsMySQLError(t *testing.T) {
var a = assert.NewAssertion(t)
{
var err error
a.IsFalse(models.IsMySQLError(err))
}
{
var err = errors.New("hello")
a.IsFalse(models.IsMySQLError(err))
}
{
db, err := dbs.Default()
if err != nil {
t.Fatal(err)
}
defer func() {
_ = db.Close()
}()
_, err = db.Exec("SELECT abc")
a.IsTrue(models.IsMySQLError(err))
a.IsTrue(models.CheckSQLErrCode(err, 1054))
a.IsFalse(models.CheckSQLErrCode(err, 1000))
}
}