Files
nl-game-api/internal/database/db.go
2026-08-14 13:17:03 +08:00

40 lines
1.0 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 database 负责数据库连接初始化与 GORM 实例管理
package database
import (
"fmt"
"time"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"nl-game-api-gin/internal/config"
)
// DB 全局数据库实例Init 成功后可直接使用
var DB *gorm.DB
// Init 连接 MySQL 并配置连接池
func Init() error {
db, err := gorm.Open(mysql.Open(config.C.DSN()), &gorm.Config{
// 只打印慢查询与错误 SQL避免日志刷屏
Logger: logger.Default.LogMode(logger.Warn),
// dev 自动建表时不生成物理外键约束,与 sql/init.sql 的手写表结构保持一致
DisableForeignKeyConstraintWhenMigrating: true,
})
if err != nil {
return fmt.Errorf("连接 MySQL 失败: %w", err)
}
sqlDB, err := db.DB()
if err != nil {
return fmt.Errorf("获取底层连接池失败: %w", err)
}
// 连接池参数:空闲 10、最大 100、连接最长存活 1 小时
sqlDB.SetMaxIdleConns(10)
sqlDB.SetMaxOpenConns(100)
sqlDB.SetConnMaxLifetime(time.Hour)
DB = db
return nil
}