代码拉取完成,页面将自动刷新
package mdb
import (
"fmt"
"gitee.com/dennis-mxx/mxx-core-v2/menv"
"gitee.com/dennis-mxx/mxx-core-v2/mexception"
"gitee.com/dennis-mxx/mxx-core-v2/mlogger"
_ "github.com/go-sql-driver/mysql"
"strings"
"time"
"xorm.io/xorm"
"xorm.io/xorm/log"
)
func InitMysql() {
if menv.Environment.Mysql.Addr == "" {
panic(mexception.NewException(mexception.NilException, "mysql.addr is nil"))
}
if menv.Environment.Mysql.MaxIdleConn == 0 {
menv.Environment.Mysql.MaxIdleConn = 5
}
if menv.Environment.Mysql.MaxOpenConn == 0 {
menv.Environment.Mysql.MaxOpenConn = 600
}
if menv.Environment.Mysql.Timeout == 0 {
menv.Environment.Mysql.Timeout = 30
}
var addr string
if i := strings.Index(menv.Environment.Mysql.Addr, "@"); i >= 0 {
addr = "user:pass" + menv.Environment.Mysql.Addr[i:]
} else {
addr = menv.Environment.Mysql.Addr
}
if engine, err := ConnectionMysql(menv.Environment.Mysql); err == nil {
Engine = engine
mlogger.Out.Info(fmt.Sprintf("Initialize [Connection mysql database [%s/%s] successful] ", menv.Environment.Mysql.Addr, addr))
} else {
panic(fmt.Sprintf("connection mysql database [%s] failure ", addr))
}
}
func ConnectionMysql(dataSource *menv.Mysql) (*xorm.Engine, error) {
defer mlogger.FormatException()
engine, err := xorm.NewEngine("mysql", menv.Environment.Mysql.Addr)
if err == nil {
timeout := time.Duration(dataSource.Timeout)
engine.SetMaxOpenConns(dataSource.MaxOpenConn) // 用于设置最大打开的连接数,默认值为0表示不限制
engine.SetMaxIdleConns(dataSource.MaxIdleConn) // 用于设置闲置的连接数
engine.SetConnMaxLifetime(timeout * time.Millisecond) // 设置一个超时时间,时间小于数据库的超时时间即可
engine.SetLogger(&ZapXormLogger{})
engine.ShowSQL(dataSource.ShowSql)
engine.EnableSessionID(true)
if menv.Environment.Logger != nil && menv.Environment.Logger.Level != "" {
if strings.EqualFold(menv.Environment.Logger.Level, "warning") {
engine.SetLogLevel(log.LOG_WARNING)
} else if strings.EqualFold(menv.Environment.Logger.Level, "error") {
engine.SetLogLevel(log.LOG_ERR)
} else if strings.EqualFold(menv.Environment.Logger.Level, "debug") {
engine.SetLogLevel(log.LOG_DEBUG)
} else {
engine.SetLogLevel(log.LOG_INFO)
}
}
}
return engine, err
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。