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.

49 lines
1.3 KiB

package db
import (
"fmt"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"gorm.io/gorm/schema"
"live/app/lib/config"
"log"
"os"
)
var Db *gorm.DB
func init() {
var err error
dsn := fmt.Sprintf("%v:%v@tcp(%v:%v)/%v?timeout=3s&readTimeout=3s&writeTimeout=3s&parseTime=true&loc=Local&charset=utf8mb4,utf8",
config.Config.Section("mysql").Key("dbuser").String(),
config.Config.Section("mysql").Key("dbpassword").String(),
config.Config.Section("mysql").Key("dbhost").String(),
config.Config.Section("mysql").Key("dbport").String(),
config.Config.Section("mysql").Key("dbname").String(),
)
Db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{
NamingStrategy: schema.NamingStrategy{
TablePrefix: config.Config.Section("mysql").Key("prefix").String(), // 表名前缀
SingularTable: true, // 使用单数表名
},
Logger: logger.New(
log.New(os.Stdout, "\r\n", log.LstdFlags),
logger.Config{
Colorful: true,
LogLevel: logger.Info, // Log level
},
),
})
if err != nil {
log.Fatal(err)
}
db, err := Db.DB()
if err != nil {
log.Fatal(err)
}
db.SetMaxIdleConns(config.Config.Section("mysql").Key("maxIdle").MustInt())
db.SetMaxOpenConns(config.Config.Section("mysql").Key("maxOpen").MustInt())
}