一波更新
This commit is contained in:
37
trunk/center/dbcenter/internal/db_heandler.go
Normal file
37
trunk/center/dbcenter/internal/db_heandler.go
Normal file
@@ -0,0 +1,37 @@
|
||||
package internal
|
||||
|
||||
import (
|
||||
"common/connection"
|
||||
"goutil/logUtilPlus"
|
||||
)
|
||||
|
||||
// ExecSql 执行sql
|
||||
func ExecSql(sql string) error {
|
||||
|
||||
defer func() error {
|
||||
if err := recover(); err != nil {
|
||||
logUtilPlus.ErrorLog("mq远程执行sql异常,对应sql:%s", sql)
|
||||
|
||||
//写入失败的文件,便于后续排查
|
||||
AddSqlErr(sql)
|
||||
}
|
||||
return nil
|
||||
}()
|
||||
|
||||
//获取数据库连接
|
||||
db := connection.GetAdminDB()
|
||||
|
||||
logUtilPlus.InfoLog("执行sql:%s", sql)
|
||||
|
||||
//执行sql
|
||||
err := db.Exec(sql).Error
|
||||
|
||||
//判断错误
|
||||
if err != nil {
|
||||
|
||||
//记录错误
|
||||
logUtilPlus.ErrorLog("ExecSql error:", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
60
trunk/center/dbcenter/internal/sql_err.go
Normal file
60
trunk/center/dbcenter/internal/sql_err.go
Normal file
@@ -0,0 +1,60 @@
|
||||
package internal
|
||||
|
||||
import (
|
||||
"goutil/fileUtil"
|
||||
"sync"
|
||||
"time"
|
||||
)
|
||||
|
||||
var (
|
||||
sqlErrList []string
|
||||
sqlErrListLock sync.RWMutex
|
||||
|
||||
fileName = "ErrSql"
|
||||
)
|
||||
|
||||
func init() {
|
||||
go func() {
|
||||
for {
|
||||
|
||||
//休息一秒
|
||||
time.Sleep(time.Second)
|
||||
|
||||
WriteErrSql()
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
// AddSqlErr 添加异常sql
|
||||
func AddSqlErr(sql string) {
|
||||
|
||||
//数据库过大就不再写入
|
||||
if len(sqlErrList) > 10000 {
|
||||
return
|
||||
}
|
||||
|
||||
func() {
|
||||
sqlErrListLock.Lock()
|
||||
defer sqlErrListLock.Unlock()
|
||||
sqlErrList = append(sqlErrList, sql)
|
||||
}()
|
||||
}
|
||||
|
||||
// WriteErrSql 获取异常sql 写入文件
|
||||
func WriteErrSql() {
|
||||
sqlErrListLock.RLock()
|
||||
defer sqlErrListLock.RUnlock()
|
||||
|
||||
//文件名拼接
|
||||
filePath := fileName + "/" + time.Now().Format("2006-01-02")
|
||||
fileName := time.Now().Format("2006-01-02 09") + ".txt"
|
||||
|
||||
for _, sql := range sqlErrList {
|
||||
//sql 添加换行符
|
||||
sql += ";\r\n"
|
||||
fileUtil.WriteFile(filePath, fileName, true, sql)
|
||||
|
||||
//删除已经执行的sql
|
||||
sqlErrList = sqlErrList[1:]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user