package boots import ( "fmt" "go-nc/configs/global" "go-nc/hook" "go.uber.org/zap" "gorm.io/driver/mysql" "gorm.io/gorm" ) // 初始化数据库连接 func InitDB() *gorm.DB { logger := InitLogger() // 连接数据库配置 dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=%s&parseTime=%t&loc=%s", global.App.Config.Database.Mysql.UserName, global.App.Config.Database.Mysql.Password, global.App.Config.Database.Mysql.Host, global.App.Config.Database.Mysql.Port, global.App.Config.Database.Mysql.Database, global.App.Config.Database.Mysql.Charset, global.App.Config.Database.Mysql.ParseTime, global.App.Config.Database.Mysql.Loc, ) // 连接数据库 db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{ Logger: &hook.CustomLogger{ Logger: logger, }, }) if err != nil { logger.Error("mysql:连接失败", zap.Error(err)) return nil } // 设置连接池参数 sqlDB, err := db.DB() if err != nil { logger.Error("mysql:连接失败", zap.Error(err)) return nil } else { // 链接成功打印日志 logger.Info("mysql:连接成功") } sqlDB.SetMaxIdleConns(global.App.Config.Database.Mysql.MaxIdleConns) // 设置最大空闲连接数 sqlDB.SetMaxOpenConns(global.App.Config.Database.Mysql.MaxOpenConns) // 设置最大连接数 sqlDB.SetConnMaxLifetime(0) // 设置了连接可复用的最大时间 // 将数据库实例赋值给全局变量 return db } // 初始化 StarRocks 数据库 func InitStarRocksDB() *gorm.DB { logger := InitLogger() // 连接 StarRocks 数据库配置 starRocksDsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s", global.App.Config.Database.StarRocks.UserName, global.App.Config.Database.StarRocks.Password, global.App.Config.Database.StarRocks.Host, global.App.Config.Database.StarRocks.Port, global.App.Config.Database.StarRocks.Database, ) // 连接 StarRocks 数据库 starRocksDB, err := gorm.Open(mysql.Open(starRocksDsn), &gorm.Config{ Logger: &hook.CustomLogger{ Logger: logger, }, }) if err != nil { logger.Error("starRocks:连接失败", zap.Error(err)) return nil } // 设置连接池参数 starRocksSqlDB, err := starRocksDB.DB() if err != nil { logger.Error("starRocks:连接失败", zap.Error(err)) return nil } else { // 链接成功打印日志 logger.Info("starRocks:连接成功") } starRocksSqlDB.SetMaxIdleConns(global.App.Config.Database.StarRocks.MaxIdleConns) // 设置最大空闲连接数 starRocksSqlDB.SetMaxOpenConns(global.App.Config.Database.StarRocks.MaxOpenConns) // 设置最大连接数 starRocksSqlDB.SetConnMaxLifetime(0) // 设置了连接可复用的最大时间 // 将数据库实例赋值给全局变量 return starRocksDB }