package database import ( "log" "psi/config" "time" "gorm.io/driver/mysql" "gorm.io/gorm" "gorm.io/gorm/logger" ) // TaskDB 任务数据库长连接(腾讯云 MySQL,用于导入后写 t_shop_goods_published) var TaskDB *gorm.DB func InitTaskDB() { cfg := config.AppConfig slowLogger := logger.New( log.New(log.Writer(), "\r\n", log.LstdFlags), logger.Config{ SlowThreshold: 200 * time.Millisecond, LogLevel: logger.Warn, IgnoreRecordNotFoundError: true, Colorful: false, }, ) var err error TaskDB, err = gorm.Open(mysql.Open(cfg.GetTaskDSN()), &gorm.Config{ Logger: slowLogger, }) if err != nil { log.Fatal("任务数据库连接失败:", err) } // 配置连接池 sqlDB, err := TaskDB.DB() if err != nil { log.Fatal("获取任务数据库连接池失败:", err) } sqlDB.SetMaxIdleConns(10) // 最大空闲连接 sqlDB.SetMaxOpenConns(50) // 最大打开连接 sqlDB.SetConnMaxLifetime(10 * time.Minute) // 连接最大存活10分钟 sqlDB.SetConnMaxIdleTime(2 * time.Minute) // 空闲连接2分钟后关闭 log.Println("任务数据库连接成功:", cfg.TaskDatabase.Host, cfg.TaskDatabase.Name) }