Skip to content

database/gdb: error rollback statement begin for mssql2016, should be begin transaction #3710

Open
@zromet

Description

Go version

go 1.22

GoFrame version

2.7.2

Can this bug be reproduced with the latest release?

Option Yes

What did you do?

语句示例:

 err := g.DB().Transaction(ctx, func(ctx context.Context, tx gdb.TX) error {
	_, err := tx.Ctx(ctx).Insert("TEST", g.Map{"key": "500.00"})
	return err
})

如插入数据不符表规则(key字段定义为int)时:
控制台报错 Error: mssql: 在将 nvarchar 值 '500.00' 转换成数据类型 int 时失败。 (这是期望报错)
除这以外 又报错 Error: mssql: ROLLBACK TRANSACTION 请求没有对应的 BEGIN TRANSACTION。(非期望报错)
此时返回前端的err 为 第二条(非期望报错),

数据库为SQL2016 它的事务定义开始为 BEGIN TRANSACTION 而非mysql 的 BEGIN

What did you see happen?

事务中 插入语句报错

What did you expect to see?

返回报错 Error: mssql: 在将 nvarchar 值 '500.00' 转换成数据类型 int 时失败

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions