first commit
This commit is contained in:
48
utils/mysql_util.go
Normal file
48
utils/mysql_util.go
Normal file
@@ -0,0 +1,48 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user