package dbConnectUtil import ( "database/sql" "fmt" "log" "time" _ "github.com/go-sql-driver/mysql" ) // DB 数据库连接池 // 定义两个全局变量分别存储不同的数据库连接 var ( DB *sql.DB // 第一个数据库连接 DBErp *sql.DB // 第二个数据库连接 DBTask *sql.DB ) // InitDB 初始化数据库连接 func InitDB(username, password, host string, port int) (*sql.DB, error) { log.Printf("开始初始化数据库连接") dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/zhishu?charset=utf8mb4&parseTime=True&loc=Local", username, password, host, port) log.Printf("数据库连接参数: %s", dsn) log.Print("开始连接数据库") var err error DB, err = sql.Open("mysql", dsn) if err != nil { return DB, fmt.Errorf("数据库连接失败: %v", err) } // 测试数据库连接 err = DB.Ping() if err != nil { return DB, fmt.Errorf("数据库连接测试失败: %v", err) } // 设置连接池参数 DB.SetMaxOpenConns(20) DB.SetMaxIdleConns(10) DB.SetConnMaxLifetime(time.Hour) return DB, nil } func InitDBTask(username, password, host string, port int) (*sql.DB, error) { log.Printf("开始初始化数据库连接") dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/task?charset=utf8mb4&parseTime=True&loc=Local", username, password, host, port) log.Printf("数据库连接参数: %s", dsn) log.Print("开始连接数据库") var err error DBTask, err = sql.Open("mysql", dsn) if err != nil { return DBTask, fmt.Errorf("数据库连接失败: %v", err) } // 测试数据库连接 err = DBTask.Ping() if err != nil { return DBTask, fmt.Errorf("数据库连接测试失败: %v", err) } // 设置连接池参数 DBTask.SetMaxOpenConns(20) DBTask.SetMaxIdleConns(10) DBTask.SetConnMaxLifetime(time.Hour) log.Printf("Task数据库连接初始化成功") return DBTask, nil }