ETCD后台服务
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.
 
 
 
 

100 lines
1.8 KiB

package models
import (
"errors"
"fmt"
"log"
"time"
"etcd/program/config"
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mssql"
)
var (
client *gorm.DB
)
// InitClient 客户端创建
func InitClient(dbCfg *config.MySQLConfig) (err error) {
if dbCfg == nil {
err = errors.New("Config is nil")
return
}
// 拼接连接数据库字符串
connStr := fmt.Sprintf("%s:%s@(%s:%d)/%s?charset=utf8&parseTime=True&loc=UTC",
dbCfg.User,
dbCfg.Passwd,
dbCfg.Address,
dbCfg.Port,
dbCfg.DbName)
// 连接数据库
db, err := gorm.Open("mysql", connStr)
if err != nil {
return
}
if dbCfg.Debug == true {
db.Debug()
}
// 禁用表名多元化
db.SingularTable(true)
// 连接池最大连接数
db.DB().SetMaxIdleConns(dbCfg.MaxIdleConns)
// 默认打开连接数
db.DB().SetMaxOpenConns(dbCfg.MaxOpenConns)
// 开启协程ping MySQL数据库查看连接状态
go func() {
for {
// ping
err = db.DB().Ping()
if err != nil {
log.Println("pingdb error ", err)
}
// 间隔5s ping一次
time.Sleep(30 * time.Second)
}
}()
// 全局变量
client = db
return
}
func InitClientNew(dbCfg *config.MsSQLConfig) (err error) {
if dbCfg == nil {
err = errors.New("Config is nil")
return
}
// 拼接连接数据库字符串
connStr := fmt.Sprintf("sqlserver://%s:%s@%s:%d?database=%s",
dbCfg.User, dbCfg.Passwd,dbCfg.Address, dbCfg.Port, dbCfg.DbName)
fmt.Println(connStr)
// 连接数据库
db, err := gorm.Open("mssql", connStr)
if err != nil {
return
}
if dbCfg.Debug == true {
db.Debug()
}
db.LogMode(true)
db.CommonDB()
// 开启协程ping MySQL数据库查看连接状态
go func() {
for {
// ping
err = db.DB().Ping()
if err != nil {
log.Println("pingdb error ", err)
}
// 间隔5s ping一次
time.Sleep(30 * time.Second)
}
}()
// 全局变量
client = db
return
}