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)
// // 不返回错误,继续执行后续逻辑
// }