Files
sundynix-go/initialize/gorm_mysql.go
T
2025-04-25 23:56:21 +08:00

44 lines
1.1 KiB
Go

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
}
}