You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.9 KiB
65 lines
1.9 KiB
package database
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
|
|
"gorm.io/driver/mysql"
|
|
"gorm.io/gorm"
|
|
"gorm.io/gorm/logger"
|
|
)
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2024-10-02 16:55:33
|
|
@ 功能: 组装连接语句
|
|
*/
|
|
func (m *MasterMysqlSetUp) SqlDsn() (dsnStr string) {
|
|
dsnStr = fmt.Sprintf("%v:%v@tcp(%v:%v)/%v?charset=%v", m.UserName, m.PassWord, m.UrlPath, m.Port, m.Name, m.Charset)
|
|
if m.ParseTime {
|
|
dsnStr = fmt.Sprintf("%v:%v@tcp(%v:%v)/%v?charset=%v&parseTime=%v&loc=%v", m.UserName, m.PassWord, m.UrlPath, m.Port, m.Name, m.Charset, m.ParseTime, m.Loc)
|
|
}
|
|
// fmt.Printf("dsnStr:%v\n", dsnStr)
|
|
return
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2024-10-02 16:56:15
|
|
@ 功能: 打开数据连接
|
|
*/
|
|
func (m *MasterMysqlSetUp) OpenSql() *gorm.DB {
|
|
sqlConfig := mysql.Config{
|
|
DSN: m.SqlDsn(), // DSN
|
|
DefaultStringSize: 255, // string 类型字段的默认长度
|
|
DisableDatetimePrecision: true, // 禁用 datetime 精度,MySQL 5.6 之前的数据库不支持
|
|
DontSupportRenameIndex: true, // 重命名索引时采用删除并新建的方式,MySQL 5.7 之前的数据库和 MariaDB 不支持重命名索引
|
|
DontSupportRenameColumn: true, // 用 `change` 重命名列,MySQL 8 之前的数据库和 MariaDB 不支持重命名列
|
|
SkipInitializeWithVersion: false, // 根据版本自动配置
|
|
}
|
|
if m.GormLog {
|
|
if opDb, err := gorm.Open(mysql.New(sqlConfig), &gorm.Config{
|
|
Logger: logger.Default.LogMode(logger.Info),
|
|
}); err != nil {
|
|
return nil
|
|
} else {
|
|
sqlDb, _ := opDb.DB()
|
|
sqlDb.SetMaxIdleConns(m.MaxIdleConns)
|
|
sqlDb.SetMaxOpenConns(m.MaxOpenConns)
|
|
sqlDb.SetConnMaxLifetime(5 * time.Minute)
|
|
return opDb
|
|
}
|
|
} else {
|
|
if opDb, err := gorm.Open(mysql.New(sqlConfig)); err != nil {
|
|
return nil
|
|
} else {
|
|
sqlDb, _ := opDb.DB()
|
|
sqlDb.SetMaxIdleConns(m.MaxIdleConns)
|
|
sqlDb.SetMaxOpenConns(m.MaxOpenConns)
|
|
sqlDb.SetConnMaxLifetime(5 * time.Minute)
|
|
return opDb
|
|
}
|
|
}
|
|
}
|
|
|