diff --git a/internal/bootstrap/db.go b/internal/bootstrap/db.go index d947c4b..811ab02 100644 --- a/internal/bootstrap/db.go +++ b/internal/bootstrap/db.go @@ -118,7 +118,9 @@ func InitDatabase(ctx context.Context) error { if err != nil { log.Fatalf("failed to get sqlDB: %s", err.Error()) } - initRawDB(sqlDB) + if conf.Conf.Database.Type != conf.DatabaseTypeSqlite3 { + initRawDB(sqlDB) + } return db.Init(d, conf.Conf.Database.Type) } @@ -149,4 +151,9 @@ func initRawDB(db *sql.DB) { log.Fatalf("failed to parse conn_max_lifetime: %s", err.Error()) } db.SetConnMaxLifetime(d) + d, err = time.ParseDuration(conf.Conf.Database.ConnMaxIdleTime) + if err != nil { + log.Fatalf("failed to parse conn_max_idle_time: %s", err.Error()) + } + db.SetConnMaxIdleTime(d) } diff --git a/internal/conf/db.go b/internal/conf/db.go index 681e8e3..46ebecb 100644 --- a/internal/conf/db.go +++ b/internal/conf/db.go @@ -19,9 +19,10 @@ type DatabaseConfig struct { CustomDSN string `yaml:"custom_dsn" hc:"when not empty, it will ignore other config" env:"DATABASE_CUSTOM_DSN"` - MaxIdleConns int `yaml:"max_idle_conns" lc:"default: 4" hc:"the maximum number of connections in the idle connection pool." env:"DATABASE_MAX_IDLE_CONNS"` - MaxOpenConns int `yaml:"max_open_conns" lc:"default: 64" hc:"the maximum number of open connections to the database." env:"DATABASE_MAX_OPEN_CONNS"` - ConnMaxLifetime string `yaml:"conn_max_lifetime" lc:"default: 1h" hc:"maximum amount of time a connection may be reused." env:"DATABASE_CONN_MAX_LIFETIME"` + MaxIdleConns int `yaml:"max_idle_conns" hc:"sqlite3 does not support setting connection parameters" env:"DATABASE_MAX_IDLE_CONNS"` + MaxOpenConns int `yaml:"max_open_conns" env:"DATABASE_MAX_OPEN_CONNS"` + ConnMaxLifetime string `yaml:"conn_max_lifetime" env:"DATABASE_CONN_MAX_LIFETIME"` + ConnMaxIdleTime string `yaml:"conn_max_idle_time" env:"DATABASE_CONN_MAX_IDLE_TIME"` } func DefaultDatabaseConfig() DatabaseConfig { @@ -33,6 +34,7 @@ func DefaultDatabaseConfig() DatabaseConfig { MaxIdleConns: 4, MaxOpenConns: 64, - ConnMaxLifetime: "1h", + ConnMaxLifetime: "2h", + ConnMaxIdleTime: "30m", } }