package initialize import ( "gorm.io/driver/mysql" "gorm.io/gorm" "sundynix-go/config" "sundynix-go/global" "sundynix-go/initialize/internal" ) // GormMysql 初始化Mysql数据库 func GormMysql() *gorm.DB { m := global.Config.Mysql return initMysqlDatabase(m) } // GromMysqlByConfig 根据配置初始化Mysql数据库 func GromMysqlByConfig(m config.Mysql) *gorm.DB { return initMysqlDatabase(m) } // initMysqlDatabase 初始化Mysql数据库的辅助函数 func initMysqlDatabase(m config.Mysql) *gorm.DB { if m.Dbname == "" { return nil } mysqlConfig := mysql.Config{ DSN: m.Dsn(), //dsn DefaultStringSize: 191, // 默认字符串类型长度 SkipInitializeWithVersion: false, // 根据版本自动配置 } if db, err := gorm.Open(mysql.New(mysqlConfig), internal.Gorm.Config(m.Prefix, m.Singular)); err != nil { panic(err) } else { db.InstanceSet("gorm:table_options", "ENGINE="+m.Engine) sqlDb, _ := db.DB() sqlDb.SetMaxIdleConns(m.MaxIdleConns) sqlDb.SetMaxOpenConns(m.MaxOpenConns) global.Logger.Info("Mysql connect success") return db } }