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及以上的信息 }