From 03aee7cd6eaa1559ebddf9a987a2e427b145504f Mon Sep 17 00:00:00 2001 From: Blizzard Date: Fri, 25 Apr 2025 23:56:21 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20mysql=E8=BF=9E=E6=8E=A5=E7=AD=96?= =?UTF-8?q?=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- initialize/gorm_mysql.go | 43 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 initialize/gorm_mysql.go diff --git a/initialize/gorm_mysql.go b/initialize/gorm_mysql.go new file mode 100644 index 0000000..ea64a45 --- /dev/null +++ b/initialize/gorm_mysql.go @@ -0,0 +1,43 @@ +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 + } +}