package lib import ( "fmt" "gitdxz.51daxuetong.cn/go_dev/bids_rpcx/config" "gorm.io/driver/mysql" "gorm.io/gorm" "sync" "time" ) var Db *gorm.DB var syncDb sync.Once func GetDb() *gorm.DB { syncDb.Do(func() { cc := config.GetConfig() dbHost := cc.String("db_host") dbPort := cc.String("db_port") dbName := cc.String("db_database") dbUser := cc.String("db_username") dbPwd := cc.String("db_password") dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", dbUser, dbPwd, dbHost, dbPort, dbName) db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) if err != nil { panic(err.Error() + dsn) } sqlDB, err := db.DB() if err != nil { panic(err) } sqlDB.SetMaxIdleConns(1) sqlDB.SetMaxOpenConns(5) sqlDB.SetConnMaxLifetime(time.Hour) Db = db }) return Db }