升级以后insert定义其它字段为主键不生效? #2410

Open
opened 2024-02-12 09:21:02 +00:00 by yangxin520520 · 2 comments

type Data struct {
PkId int64 json:"pkId" xorm:"pk autoincr"
Id int64 json:"id"
Name string json:"name"
}
row := *row.Data {
Id:230033782619625,
Name: "LiWei"
}

入库前打印值:
fmt.Prinln(row.PkId, row.Id, row.Name) //输出 0, 230033782619625, LiWei

line, err := engine.Insert(row)

执行成功以后打印值:
fmt.Prinln(row.PkId, row.Id, row.Name) //输出 0, 1, LiWei

升级前正确的值输出为:
fmt.Prinln(row.PkId, row.Id, row.Name) //输出 1, 230033782619625, LiWei

问题:它入库成功后的自增pkId值错误地赋值给了Id, 主键PkId却没有值。

type Data struct { PkId int64 `json:"pkId" xorm:"pk autoincr"` Id int64 `json:"id"` Name string `json:"name"` } row := *row.Data { Id:230033782619625, Name: "LiWei" } 入库前打印值: fmt.Prinln(row.PkId, row.Id, row.Name) //输出 0, 230033782619625, LiWei line, err := engine.Insert(row) 执行成功以后打印值: fmt.Prinln(row.PkId, row.Id, row.Name) //输出 0, 1, LiWei 升级前正确的值输出为: fmt.Prinln(row.PkId, row.Id, row.Name) //输出 1, 230033782619625, LiWei 问题:它入库成功后的自增pkId值错误地赋值给了Id, 主键PkId却没有值。
Author

看了源以后,正确输出的结构体加上xorm:
type Data struct {
PkId int64 json:"pkId" xorm:"pk autoincr"
Id int64 json:"id" xorm:"id"
Name string json:"name"
}

处理:每个结构体字段都加上xorm,以前是不需要的。

看了源以后,正确输出的结构体加上xorm: type Data struct { PkId int64 `json:"pkId" xorm:"pk autoincr"` Id int64 `json:"id" xorm:"id"` Name string ` json:"name"` } 处理:每个结构体字段都加上xorm,以前是不需要的。
Owner

It's impossible. The CI has been passed for every commit. Please check your code.

It's impossible. The CI has been passed for every commit. Please check your code.
lunny added the
need
feedback
label 2024-02-12 09:43:23 +00:00
Sign in to join this conversation.
No Milestone
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: xorm/xorm#2410
No description provided.