package model import ( "fmt" "github.com/fonchain_enterprise/micro-account/cmd/config" "github.com/fonchain_enterprise/utils/zap_log" "gorm.io/gorm/logger" "strings" "time" "gorm.io/driver/mysql" "gorm.io/gorm" "gorm.io/gorm/schema" ) var DB *gorm.DB type MysqlConfig struct { Db string DbHost string DbPort string DbUser string DbPassWord string DbName string } func LoadEnv(config MysqlConfig) { //MySQL数据库 path := strings.Join([]string{config.DbUser, ":", config.DbPassWord, "@tcp(", config.DbHost, ":", config.DbPort, ")/", config.DbName, "?charset=utf8&parseTime=true&loc=Local"}, "") fmt.Println(path) //连接数据库 Database(path) } func Database(conn string) { var ormLogger logger.Interface if config.AppConfig.System.Mode != "prod" { ormLogger = logger.Default.LogMode(logger.Info) } else { ormLogger = zap_log.NewGormLogger() } db, err := gorm.Open(mysql.New(mysql.Config{ DSN: conn, // DSN data source name DefaultStringSize: 256, // string 类型字段的默认长度 DisableDatetimePrecision: true, // 禁用 datetime 精度,MySQL 5.6 之前的数据库不支持 DontSupportRenameIndex: true, // 重命名索引时采用删除并新建的方式,MySQL 5.7 之前的数据库和 MariaDB 不支持重命名索引 DontSupportRenameColumn: true, // 用 `change` 重命名列,MySQL 8 之前的数据库和 MariaDB 不支持重命名列 SkipInitializeWithVersion: false, // 根据版本自动配置 }), &gorm.Config{ //Logger: log2.NewGormLogger(), Logger: ormLogger, NamingStrategy: schema.NamingStrategy{ SingularTable: true, }, }) if err != nil { panic(err) } sqlDB, _ := db.DB() sqlDB.SetMaxIdleConns(20) //设置连接池,空闲 sqlDB.SetMaxOpenConns(100) //打开 sqlDB.SetConnMaxLifetime(time.Second * 30) DB = db migration() }