package db import ( "busniess-user-center/config" "busniess-user-center/pkg/log" "fmt" "go.uber.org/zap" "gorm.io/driver/mysql" "gorm.io/gorm" ) // todo 兼容同一个mysql实例同时连接多个database func InitDB(logger *zap.SugaredLogger, conf config.Mysql) (*gorm.DB, error) { if logger == nil { return nil, fmt.Errorf("Initdb logger is nil") } gormLogger := log.NewGormLogger(logger) db, err := gorm.Open(mysql.Open(conf.TransDns()), &gorm.Config{Logger: gormLogger}) if err != nil { if db != nil { if sqlDB, err := db.DB(); err != nil { return nil, err } else { _ = sqlDB.Close() } } return nil, err } sqlDB, err := db.DB() if err != nil { return nil, err } sqlDB.SetMaxIdleConns(conf.MaxIdleConns) sqlDB.SetMaxOpenConns(conf.MaxOpenConns) return db, nil }