Closed kinwyb closed 2 years ago
Describe the bug can not get error for result but log show error msg
Stack trace: 2022/04/28 15:06:48 got token tokenLoginAck 2022/04/28 15:06:48 got token tokenEnvChange 2022/04/28 15:06:48 got token tokenDone 2022/04/28 15:06:48 got DONE or DONEPROC status=0 2022/04/28 15:06:48 got token tokenColMetadata 2022/04/28 15:06:48 got token tokenRow 2022/04/28 15:06:48 got token tokenDone 2022/04/28 15:06:48 got DONE or DONEPROC status=16 2022/04/28 15:06:48 got token tokenEnvChange 2022/04/28 15:06:48 got token tokenEnvChange 2022/04/28 15:06:48 got token tokenDone 2022/04/28 15:06:48 got DONE or DONEPROC status=0 2022/04/28 15:06:48 got token tokenColMetadata 2022/04/28 15:06:48 got token tokenError 2022/04/28 15:06:48 got ERROR 8169 将字符串转换为 uniqueidentifier 时失败。 2022/04/28 15:06:48 got token tokenEnvChange 2022/04/28 15:06:48 got token tokenDone 2022/04/28 15:06:48 got DONE or DONEPROC status=2 2022/04/28 15:06:48 got token tokenDoneInProc 2022/04/28 15:06:48 got token tokenReturnStatus 2022/04/28 15:06:48 got token tokenDoneProc 2022/04/28 15:06:48 got DONE or DONEPROC status=0 2022/04/28 15:06:48 got token tokenError 2022/04/28 15:06:48 got ERROR 3902 COMMIT TRANSACTION 请求没有对应的 BEGIN TRANSACTION。 2022/04/28 15:06:48 got token tokenDone 2022/04/28 15:06:48 got DONE or DONEPROC status=2 mssql_test.go:133: mssql: COMMIT TRANSACTION 请求没有对应的 BEGIN TRANSACTION。
To Reproduce
db, := conn.GetDb() tx, err := db.BeginTx(context.Background(), nil) if err != nil { return } sql := "SELECT * FROM [DispatchMaster] WHERE DispatchMasterID = ''" ,err = tx.Query(sql) if err != nil { tx.Rollback() return } sql = "INSERT INTO MACHINESSTATE (state,display,[desc]) VALUES (?,?,?)" ,err = tx.Exec(sql,4,"test","test") if err != nil { return } err = tx.Commit() if err != nil { return }
Expected behavior
output "ERROR 8169 将字符串转换为 uniqueidentifier 时失败" I want query result can get error
SQL Server version: 2016, 2019 Operating system: windows 2016
CREATE Table DispatchMaster ( DispatchMasterID uniqueidentifier )
I can get the error after reading the result, but the transaction has been rolled back. Can I judge whether the transaction has been rolled back and do not do commit event.
Describe the bug can not get error for result but log show error msg
To Reproduce
db, := conn.GetDb() tx, err := db.BeginTx(context.Background(), nil) if err != nil { return } sql := "SELECT * FROM [DispatchMaster] WHERE DispatchMasterID = ''" ,err = tx.Query(sql) if err != nil { tx.Rollback() return } sql = "INSERT INTO MACHINESSTATE (state,display,[desc]) VALUES (?,?,?)" ,err = tx.Exec(sql,4,"test","test") if err != nil { return } err = tx.Commit() if err != nil { return }
Expected behavior
output "ERROR 8169 将字符串转换为 uniqueidentifier 时失败" I want query result can get error
Further technical details
SQL Server version: 2016, 2019 Operating system: windows 2016
CREATE Table DispatchMaster ( DispatchMasterID uniqueidentifier )