mysql.go 2.0 KB
Newer Older
1
package initialize
Mr.奇淼('s avatar
Mr.奇淼( 已提交
2 3 4

import (
	"gin-vue-admin/global"
Mr.奇淼('s avatar
Mr.奇淼( 已提交
5 6 7
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/logger"
8
	"os"
Mr.奇淼('s avatar
Mr.奇淼( 已提交
9 10
)

11
// 初始化数据库并产生数据库全局变量
12
func Mysql() {
13
	admin := global.GVA_CONFIG.Mysql
Mr.奇淼('s avatar
Mr.奇淼( 已提交
14 15 16 17 18 19 20 21 22 23 24 25
	mysqlConfig := mysql.Config{
		DSN:                       admin.Username + ":" + admin.Password + "@(" + admin.Path + ")/" + admin.Dbname + "?" + admin.Config, // 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,                                                                                                // 根据版本自动配置
	}
	var gormConfig *gorm.Config
	if admin.LogMode { //根据配置决定是否开启日志
		gormConfig = &gorm.Config{
			Logger: logger.Default.LogMode(logger.Info),
26
			DisableForeignKeyConstraintWhenMigrating: true,
Mr.奇淼('s avatar
Mr.奇淼( 已提交
27 28
		}
	} else {
Mr.奇淼('s avatar
Mr.奇淼( 已提交
29 30 31
		gormConfig = &gorm.Config{
			Logger: logger.Default.LogMode(logger.Silent),
		}
Mr.奇淼('s avatar
Mr.奇淼( 已提交
32 33 34
	}

	if db, err := gorm.Open(mysql.New(mysqlConfig), gormConfig); err != nil {
35 36
		global.GVA_LOG.Error("MySQL启动异常", err)
		os.Exit(0)
Mr.奇淼('s avatar
Mr.奇淼( 已提交
37 38
	} else {
		global.GVA_DB = db
Mr.奇淼('s avatar
Mr.奇淼( 已提交
39 40 41
		sqlDB, _ := db.DB()
		sqlDB.SetMaxIdleConns(admin.MaxIdleConns)
		sqlDB.SetMaxOpenConns(admin.MaxOpenConns)
Mr.奇淼('s avatar
Mr.奇淼( 已提交
42 43
	}
}