gin-login-register/config/database.go
2023-03-01 23:53:06 +08:00

43 lines
990 B
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package config
import (
"fmt"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"log"
"sync"
)
var _db *gorm.DB
var once sync.Once
func InitDb() (*gorm.DB, error) {
config := GetConfig()
mysqlConf := config.MySql
dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local&timeout=%s",
mysqlConf.User, mysqlConf.Password, mysqlConf.Host, mysqlConf.Port, mysqlConf.Db, mysqlConf.Timeout)
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
return nil, err
}
sqlDb, err := db.DB()
if err != nil {
return nil, err
}
sqlDb.SetMaxOpenConns(100) // 设置数据库连接池最大连接数
sqlDb.SetMaxIdleConns(20) // 连接池最大允许的空闲连接数如果没有sql任务需要执行的连接数大于20超过的连接会被连接池关闭。
return db, nil
}
func GetDb() *gorm.DB {
once.Do(func() {
db, err := InitDb()
if err != nil {
log.Fatal("连接数据库失败, error: ", err)
}
_db = db
})
return _db
}