Files
toutoukan/init/databaseInit/databaseInit.go
2025-08-10 02:10:21 +08:00

53 lines
1.1 KiB
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 databaseInit
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
"gopkg.in/yaml.v3"
"os"
"toutoukan/model/config"
)
var UserDB *sql.DB
func DbInit() {
data, err := os.ReadFile("./config.yaml")
if err != nil {
panic(fmt.Errorf("读取配置文件失败: %w", err))
}
// 解析配置
var config config.Config
if err := yaml.Unmarshal(data, &config); err != nil {
panic(fmt.Errorf("解析YAML失败: %w", err))
}
// 构建DSN
dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/toutoukan?%s",
config.Database.Username,
config.Database.Password,
config.Database.Host,
config.Database.Port,
config.Database.Params,
)
fmt.Println("DSN:", dsn)
UserDB, err = sql.Open("mysql", dsn)
if err != nil {
panic(fmt.Errorf("数据库连接失败1: %w", err))
}
// 验证连接是否可用
if err := UserDB.Ping(); err != nil {
panic("数据库连接不可用2")
}
// 设置连接池参数
UserDB.SetMaxOpenConns(10) // 最大打开连接数
UserDB.SetMaxIdleConns(5) // 最大空闲连接数
UserDB.SetConnMaxLifetime(0) // 连接最大存活时间0表示不限制
}