package initialize import ( "gorm.io/driver/mysql" "gorm.io/gorm" "sundynix-go/config" "sundynix-go/global" ) // 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), &gorm.Config{ DisableForeignKeyConstraintWhenMigrating: true, // 禁用自动创建外键约束 }); err != nil { return nil } 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 } }