8/16/2025

gorm sqlite

loc, err := time.LoadLocation("Asia/Shanghai")
if err != nil {
	log.Fatal(err)
}
db, err := gorm.Open(sqlite.Open("klines.db"), &gorm.Config{
	NowFunc: func() time.Time {
		return time.Now().In(loc)
	},
	Logger: logger.Default.LogMode(logger.Silent),
})
if err != nil {
	log.Fatal(err)
}

// 显式设置WAL模式
if err := db.Exec("PRAGMA journal_mode=WAL;").Error; err != nil {
	log.Printf("设置WAL模式失败: %v", err)
} else {
	log.Println("成功设置WAL模式")
}
sqlDB, err := db.DB()
if err != nil {
	log.Fatal(err)
}
sqlDB.SetMaxIdleConns(10)
sqlDB.SetMaxOpenConns(100)
// 自动迁移表结构
// if err := db.Table(kline.TableName()).AutoMigrate(&Kline{}); err != nil {
// 	return err
// }

// // 动态创建联合索引
// if err := createIndexForKlineTable(db, kline.TableName()); err != nil {
// 	log.Printf("为表 %s 创建索引失败: %v", kline.TableName(), err)
// 	// 不返回错误,继续执行后续逻辑
// }