Files
Quincy_admin/utils/mysql_util.go
2026-03-26 22:13:03 +08:00

49 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 utils
import (
"Quincy_admin/config"
"fmt"
"log"
"sync"
"github.com/gin-gonic/gin"
_ "github.com/go-sql-driver/mysql" // MySQL驱动
"github.com/jmoiron/sqlx"
)
var db *sqlx.DB // 全局数据库连接实例使用sqlx.DB替代sql.DB
var once sync.Once // 确保初始化只执行一次
// InitDB 初始化数据库连接
func InitDB(cfg *config.Config) (*sqlx.DB, error) {
var err error
once.Do(func() {
// 构建数据库连接字符串 - 添加时区参数
dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?parseTime=true&loc=Asia%%2FShanghai",
cfg.DB.User, cfg.DB.Password, cfg.DB.Host, cfg.DB.Port, cfg.DB.Name)
// 使用sqlx.Open替代sql.Open
db, err = sqlx.Open("mysql", dsn)
if err != nil {
log.Fatalf("Error opening database: %v", err)
}
// 测试数据库连接
err = db.Ping()
if err != nil {
log.Fatalf("Error connecting to database: %v", err)
}
// 设置连接池参数
db.SetMaxOpenConns(20) // 最大打开连接数
db.SetMaxIdleConns(10) // 最大空闲连接数
})
return db, err
}
// GetDB 从上下文中获取数据库连接
func GetDB(c *gin.Context) *sqlx.DB {
return db
}