From 810c5287b803ffdb765d3b6fa265230bf1c1dc73 Mon Sep 17 00:00:00 2001 From: cloudwindy <49033775+cloudwindy@users.noreply.github.com> Date: Tue, 11 Jul 2023 01:10:36 +0800 Subject: [PATCH] fix(db): transaction should be rolled back when an error occurs --- db/api.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/db/api.go b/db/api.go index 47b8c26..4c8d2dc 100644 --- a/db/api.go +++ b/db/api.go @@ -128,7 +128,7 @@ func Query(L *lua.LState) int { L.Push(lua.LString(err.Error())) return 2 } - defer tx.Commit() + defer tx.Rollback() sqlRows, err := tx.Query(query) if err != nil { L.Push(lua.LNil) @@ -142,6 +142,7 @@ func Query(L *lua.LState) int { L.Push(lua.LString(err.Error())) return 2 } + tx.Commit() result := L.NewTable() result.RawSetString(`rows`, rows) result.RawSetString(`columns`, columns) @@ -161,7 +162,7 @@ func Exec(L *lua.LState) int { L.Push(lua.LString(err.Error())) return 2 } - defer tx.Commit() + defer tx.Rollback() sqlResult, err := tx.Exec(query) if err != nil { L.Push(lua.LNil) @@ -175,6 +176,7 @@ func Exec(L *lua.LState) int { if aff, err := sqlResult.RowsAffected(); err == nil { result.RawSetString(`rows_affected`, lua.LNumber(aff)) } + tx.Commit() L.Push(result) return 1 }