package lib import ( "encoding/json" "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() fmt.Println(cc.All()) 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) data, _ := json.Marshal(sqlDB.Stats()) //获得当前的SQL配置情况 fmt.Println(data) Db = db }) return Db }