fix(sqlite): database is locked issue
This commit is contained in:
@@ -22,6 +22,7 @@ func NewSQLiteDB[C any](file string) (*SQLiteDB[C], error) {
|
||||
if err != nil {
|
||||
return &SQLiteDB[C]{}, err
|
||||
}
|
||||
db.SetMaxOpenConns(1)
|
||||
return &SQLiteDB[C]{db}, nil
|
||||
}
|
||||
|
||||
@@ -201,6 +202,8 @@ func (db *SQLiteDB[C]) selectMessages(query string, args ...any) ([]Message, err
|
||||
SELECT GuildID, ChannelID, ID, Language, OriginChannelID, OriginID FROM messages
|
||||
%s
|
||||
`, query), args...)
|
||||
defer r.Close()
|
||||
|
||||
if err != nil {
|
||||
return []Message{}, errors.Join(ErrInternal, err)
|
||||
}
|
||||
@@ -435,6 +438,8 @@ func (db *SQLiteDB[C]) selectChannels(query string, args ...any) ([]Channel, err
|
||||
SELECT GuildID, ID, Language FROM channels
|
||||
%s
|
||||
`, query), args...)
|
||||
defer r.Close()
|
||||
|
||||
if err != nil {
|
||||
return []Channel{}, errors.Join(ErrInternal, err)
|
||||
}
|
||||
|
||||
8
main.go
8
main.go
@@ -25,7 +25,11 @@ const (
|
||||
// var translation_provider = flag.String("tprovider", string(GOOGLE_TRANSLATE), "Translation provider")
|
||||
var (
|
||||
database_file = flag.String("db", "file:./guild.db", "SQLite database file/location")
|
||||
discord_token = flag.String("token", os.Getenv("DISCORD_TOKEN"), "Discord bot authentication token")
|
||||
discord_token = flag.String(
|
||||
"token",
|
||||
os.Getenv("DISCORD_TOKEN"),
|
||||
"Discord bot authentication token",
|
||||
)
|
||||
)
|
||||
|
||||
func init() {
|
||||
@@ -39,7 +43,7 @@ func main() {
|
||||
ReportCaller: true,
|
||||
}))
|
||||
|
||||
db, err := guilddb.NewSQLiteDB[gconf.ConfigString](*database_file)
|
||||
db, err := guilddb.NewSQLiteDB[gconf.ConfigString](*database_file + "?_busy_timeout=5000")
|
||||
if err != nil {
|
||||
logger.Error("Failed to open database connection", slog.String("err", err.Error()))
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user