diff --git a/init/databaseInit/databaseInit.go b/init/databaseInit/databaseInit.go index d58d101..e17b24a 100644 --- a/init/databaseInit/databaseInit.go +++ b/init/databaseInit/databaseInit.go @@ -1,15 +1,19 @@ package databaseInit import ( - "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" "gopkg.in/yaml.v3" + "gorm.io/driver/mysql" + "gorm.io/gorm" + "log" "os" + "time" "toutoukan/model/config" ) -var UserDB *sql.DB +var UserDB *gorm.DB +var Dsn string func DbInit() { data, err := os.ReadFile("./config.yaml") @@ -32,21 +36,25 @@ func DbInit() { config.Database.Params, ) + Dsn = dsn + fmt.Println("DSN:", dsn) - UserDB, err = sql.Open("mysql", dsn) + UserDB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{}) if err != nil { - panic(fmt.Errorf("数据库连接失败1: %w", err)) + log.Fatal(err) } - // 验证连接是否可用 - if err := UserDB.Ping(); err != nil { - panic("数据库连接不可用2") + sqlDB, err := UserDB.DB() + if err != nil { + log.Printf("获取数据库连接池失败: %v", err) + return } - // 设置连接池参数 - UserDB.SetMaxOpenConns(10) // 最大打开连接数 - UserDB.SetMaxIdleConns(5) // 最大空闲连接数 - UserDB.SetConnMaxLifetime(0) // 连接最大存活时间(0表示不限制) + // 3. 配置连接池参数 + sqlDB.SetMaxOpenConns(50) // 最大打开连接数(并发连接上限,根据服务器性能调整) + sqlDB.SetMaxIdleConns(20) // 最大空闲连接数(保持一定空闲连接,避免频繁创建) + sqlDB.SetConnMaxLifetime(30 * time.Minute) // 连接最大存活时间(防止连接过期) + sqlDB.SetConnMaxIdleTime(10 * time.Minute) // 连接最大空闲时间 }