提问人:Akhilesh mahajan 提问时间:10/27/2023 更新时间:11/24/2023 访问量:156
扩展协议限制为 65535 个参数 - Golang Gorm
extended protocol limited to 65535 parameters - Golang Gorm
问:
我正在使用 golang 中的 Gorm 库来处理数据库(postgres 操作)。
我正在做下面提到的查询以获取一些详细信息。
query = query.Where("id in ?", ids).Find(&dest)
ids 的长度将相当大(超过 100k)
在点击查询时,我收到以下错误。
extended protocol limited to 65535 parameters
- 我已经尝试了 FindInBatches 函数,但它仍然给出相同的错误。
- 使用带有限制和偏移的 for 循环是有效的,但消耗太多时间。
有关如何解决此问题的任何建议都会有所帮助。
答:
0赞
Boris BRESCIANI
11/24/2023
#1
你可以做这样的事情:
type User struct {
ID string
}
totalUsers := make([]*User, 0, len(ids))
max := 65535 - 1 // safe
for i := 0; i < len(ids); i += max {
m := i + max
if len(ids) < m {
m = len(ids)
}
var users []*User
query.Where("id in ?", ids[i:m]).Find(&users)
totalUsers = append(totalUsers, users...)
}
评论
id = ANY (array_value)