You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

122 lines
3.7 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package MariaDbUtil
import (
"dsDataex/Utils/CommonUtil"
"dsDataex/Utils/ConfigUtil"
"fmt"
_ "github.com/go-sql-driver/mysql"
"github.com/xormplus/core"
"github.com/xormplus/xorm"
"github.com/xormplus/xorm/log"
"os"
"time"
)
var EngineYPT, EngineXPT *xorm.Engine
func init() {
host := ConfigUtil.MariaYPTIp
port := ConfigUtil.MariaYPTPort
user := ConfigUtil.MariaYPTUser
dbname := ConfigUtil.MariaYPTDataBase
password := ConfigUtil.MariaYPTPwd
//mysql
master := fmt.Sprintf("%s:%s@%s(%s:%s)/%s?charset=utf8", user, password, "tcp", host, port, dbname)
var err error
EngineYPT, err = xorm.NewEngine("mysql", master)
if err != nil {
fmt.Println(err)
}
//设置数据库连接池
EngineYPT.SetMaxOpenConns(100) //设置打开数据库的最大连接数,包含正在使用的连接和连接池的连接。
EngineYPT.SetMaxIdleConns(10) //设置连接池中的保持连接的最大连接数。
EngineYPT.SetConnMaxLifetime(time.Second * 5)
//调用第一次
err = EngineYPT.Ping()
if err != nil {
fmt.Println("Maria Err :", err.Error())
}
//这段代码是黄海后加上的 2020-04-16
//通过定时ping保持鲜活
go func() {
for{
//https://studygolang.com/articles/12617
time.Sleep(time.Duration(60)*time.Second)
if err != nil {
fmt.Println("\n[xorm] [error] " + CommonUtil.GetCurrentTime() + err.Error())
} else {
fmt.Println("\n[xorm] [info] "+CommonUtil.GetCurrentTime()+" PING DATABASE Maria")
}
}
}()
//设置数据时区
var location *time.Location
location, err = time.LoadLocation("Asia/Shanghai")
EngineYPT.TZLocation = location
//与 struct的映射方式这里采用蛇型方法默认是蛇形
EngineYPT.SetTableMapper(core.SnakeMapper{})
//显示+记录SQL日志
f, _ := os.Create("./Logs/sql.log")
EngineYPT.SetLogger(log.NewSimpleLogger(f))
EngineYPT.ShowSQL(true) // 则会在控制台打印出生成的SQL语句
EngineYPT.Logger().SetLevel(log.LOG_DEBUG) //则会在控制台打印info及以上的信息
}
func init() {
host := ConfigUtil.MariaXPTIp
port := ConfigUtil.MariaXPTPort
user := ConfigUtil.MariaXPTUser
dbname := ConfigUtil.MariaXPTDataBase
password := ConfigUtil.MariaXPTPwd
//mysql
master := fmt.Sprintf("%s:%s@%s(%s:%s)/%s?charset=utf8", user, password, "tcp", host, port, dbname)
var err error
EngineXPT, err = xorm.NewEngine("mysql", master)
if err != nil {
fmt.Println(err)
}
//设置数据库连接池
EngineXPT.SetMaxOpenConns(100) //设置打开数据库的最大连接数,包含正在使用的连接和连接池的连接。
EngineXPT.SetMaxIdleConns(10) //设置连接池中的保持连接的最大连接数。
EngineXPT.SetConnMaxLifetime(time.Second * 5)
//调用第一次
err = EngineXPT.Ping()
if err != nil {
fmt.Println("Maria Err :", err.Error())
}
//这段代码是黄海后加上的 2020-04-16
//通过定时ping保持鲜活
go func() {
for{
//https://studygolang.com/articles/12617
time.Sleep(time.Duration(60)*time.Second)
if err != nil {
fmt.Println("\n[xorm] [error] " + CommonUtil.GetCurrentTime() + err.Error())
} else {
fmt.Println("\n[xorm] [info] "+CommonUtil.GetCurrentTime()+" PING DATABASE Maria")
}
}
}()
//设置数据时区
var location *time.Location
location, err = time.LoadLocation("Asia/Shanghai")
EngineXPT.TZLocation = location
//与 struct的映射方式这里采用蛇型方法默认是蛇形
EngineXPT.SetTableMapper(core.SnakeMapper{})
//显示+记录SQL日志
f, _ := os.Create("./Logs/sql.log")
EngineXPT.SetLogger(log.NewSimpleLogger(f))
EngineXPT.ShowSQL(true) // 则会在控制台打印出生成的SQL语句
EngineXPT.Logger().SetLevel(log.LOG_DEBUG) //则会在控制台打印info及以上的信息
}