package config import ( "fmt" "log" "time" "database/sql" _ "github.com/go-sql-driver/mysql" ) // DBConfig 数据库配置 var DBConfig = struct { Username string Password string Host string Port string DBName string }{ Username: "root", Password: "root", Host: "127.0.0.1", Port: "3306", DBName: "nl_blog", } // DB 全局数据库连接池 var DB *sql.DB // InitDB 初始化数据库连接 func InitDB() { // 构建DSN dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", DBConfig.Username, DBConfig.Password, DBConfig.Host, DBConfig.Port, DBConfig.DBName) // 打开数据库连接 var err error DB, err = sql.Open("mysql", dsn) if err != nil { log.Fatalf("Failed to open database connection: %v", err) } // 配置连接池 DB.SetMaxOpenConns(25) // 最大打开连接数 DB.SetMaxIdleConns(5) // 最大空闲连接数 DB.SetConnMaxLifetime(5 * time.Minute) // 连接最大生命周期 DB.SetConnMaxIdleTime(30 * time.Second) // 连接最大空闲时间 // 测试连接 if err := DB.Ping(); err != nil { log.Fatalf("Failed to ping database: %v", err) } log.Println("Database connection established successfully!") } // CloseDB 关闭数据库连接 func CloseDB() { if DB != nil { DB.Close() log.Println("Database connection closed!") } }