denisenkom / go-mssqldb

Microsoft SQL server driver written in go language
BSD 3-Clause "New" or "Revised" License
1.81k stars 493 forks source link

can not get query error #737

Closed kinwyb closed 2 years ago

kinwyb commented 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

Further technical details

SQL Server version: 2016, 2019 Operating system: windows 2016

CREATE Table DispatchMaster ( DispatchMasterID uniqueidentifier )

kinwyb commented 2 years ago

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.