package global import ( "database/sql" "fmt" "log" "time" "xugu_license/internal/module/capture" _ "xugu_license/pkg/xugu" ) var XuguDB *sql.DB var OaDB *sql.DB //var LicCache *license_cache.Cache func InitDb() { cfg := LoadConfig("./config.toml") fmt.Println("cfg", cfg) licDbstr := fmt.Sprintf("IP=%s;DB=%s;User=%s;PWD=%s;Port=%s;AUTO_COMMIT=on;CHAR_SET=UTF8", cfg.Database.LicDBIP, cfg.Database.LicDBDb, cfg.Database.LicDBUser, cfg.Database.LicDBPass, cfg.Database.LicDBPort) oaDbstr := fmt.Sprintf("IP=%s;DB=%s;User=%s;PWD=%s;Port=%s;AUTO_COMMIT=on;CHAR_SET=UTF8", cfg.Database.OADBIP, cfg.Database.OADBDb, cfg.Database.OADBUser, cfg.Database.OADBPass, cfg.Database.OADBPort) var err error XuguDB, err = sql.Open("xugusql", licDbstr) if err != nil { log.Fatal("XuguDB err ", err) } XuguDB.SetConnMaxLifetime(time.Hour) // 设置连接的最大生命周期 // 启动定时任务保活 //go keepDBAlive(XuguDB) //IP=10.28.20.111;DB=ECOLOGY2;User=XUGU;PWD=oatest@2024;Port=5148;AUTO_COMMIT=on;CHAR_SET=UTF8 //IP=10.28.20.150;DB=oadb;User=SYSDBA;PWD=SYSDBA;Port=5199;AUTO_COMMIT=on;CHAR_SET=UTF8 OaDB, err = sql.Open("xugusql", oaDbstr) if err != nil { log.Fatal("OaDB err ", err) } if err := OaDB.Ping(); err != nil { log.Fatal("OaDB ping err ", err) } OaDB.SetConnMaxLifetime(time.Hour) // 设置连接的最大生命周期 // 启动定时数据同步服务 go capture.StartCapture(OaDB, XuguDB) //license缓存 // layout := "2006-01-02 15:04:05" // startTime, _ := time.Parse(layout, "2023-07-30 14:00:00") // endTime, _ := time.Parse(layout, "2023-08-26 16:00:00") // LicCache = license_cache.NewCache() // err = LicCache.LoadDataFromDB(XuguDB, startTime, endTime, 0, 20) // if err != nil { // fmt.Println("license缓存初始化失败", err) // } // fmt.Println("license缓存初始化完成", LicCache.GetData()) } func keepDBAlive(db *sql.DB) { ticker := time.NewTicker(5 * time.Minute) defer ticker.Stop() for range ticker.C { err := db.Ping() if err != nil { log.Println("数据库连接丢失,重试中...") // 处理重连逻辑 } else { log.Println("数据库连接正常") } } }