fix: 修复数据库配置和事务一致性问题
数据库配置: - SQLite 开启 WAL 模式,读写可并发 - 设置 busy_timeout=5000ms 避免锁超时 - 设置 synchronous=NORMAL 平衡性能和安全 - SQLite MaxOpenConns 设为 1 避免并发写入冲突 事务修复: - auth.go: 注册流程(用户+设备+会话)加入事务 - auth.go: 密码重置(修改密码+标记验证码)加入事务 - cards.go: 卡密使用加入事务,补充 UsedAt 字段 - cards.go: 代理商批量生成(扣款+生成卡密)加入事务 - extension.go: 充值(修改余额+记录)加入事务 - extension.go: 扣费(修改余额+记录)加入事务 - storage_config.go: 设置默认存储加入事务
This commit is contained in:
@@ -59,7 +59,7 @@ func initSQLite() {
|
||||
dbPath := filepath.Join(dataDir, "verification_platform.db")
|
||||
|
||||
var errOpen error
|
||||
DB, errOpen = gorm.Open(sqlite.Open(dbPath), &gorm.Config{
|
||||
DB, errOpen = gorm.Open(sqlite.Open(dbPath+"?_journal_mode=WAL&_busy_timeout=5000&_synchronous=NORMAL"), &gorm.Config{
|
||||
Logger: logger.Default.LogMode(logger.Silent),
|
||||
DisableForeignKeyConstraintWhenMigrating: true,
|
||||
})
|
||||
@@ -70,7 +70,7 @@ func initSQLite() {
|
||||
|
||||
if sqlDB, err := DB.DB(); err == nil {
|
||||
sqlDB.SetMaxIdleConns(10)
|
||||
sqlDB.SetMaxOpenConns(100)
|
||||
sqlDB.SetMaxOpenConns(1)
|
||||
sqlDB.SetConnMaxLifetime(time.Hour)
|
||||
}
|
||||
|
||||
@@ -132,7 +132,7 @@ func initAutoDetect() {
|
||||
dataDir := config.GetDataDir()
|
||||
dbPath := filepath.Join(dataDir, "verification_platform.db")
|
||||
|
||||
DB, err = gorm.Open(sqlite.Open(dbPath), &gorm.Config{
|
||||
DB, err = gorm.Open(sqlite.Open(dbPath+"?_journal_mode=WAL&_busy_timeout=5000&_synchronous=NORMAL"), &gorm.Config{
|
||||
Logger: logger.Default.LogMode(logger.Silent),
|
||||
DisableForeignKeyConstraintWhenMigrating: true,
|
||||
})
|
||||
@@ -143,8 +143,13 @@ func initAutoDetect() {
|
||||
}
|
||||
|
||||
if sqlDB, err := DB.DB(); err == nil {
|
||||
sqlDB.SetMaxIdleConns(config.GetInt("database.max_idle_conns"))
|
||||
sqlDB.SetMaxOpenConns(config.GetInt("database.max_open_conns"))
|
||||
if config.GetString("database.type") == "sqlite" || config.GetString("database.type") == "" {
|
||||
sqlDB.SetMaxIdleConns(10)
|
||||
sqlDB.SetMaxOpenConns(1)
|
||||
} else {
|
||||
sqlDB.SetMaxIdleConns(config.GetInt("database.max_idle_conns"))
|
||||
sqlDB.SetMaxOpenConns(config.GetInt("database.max_open_conns"))
|
||||
}
|
||||
sqlDB.SetConnMaxLifetime(time.Hour)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user