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
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())
|
|
}
|