批量新增和修改中的 65535

date
Aug 22, 2023
slug
extended protocol limited to 65535 parametersextended protocol limited to 65535 parameters 问题解决
status
Published
tags
Go
Gorm
summary
Gorm 踩坑日记
type
Post
Created Time
Oct 28, 2023 01:45 PM
Updated Time
Oct 28, 2023 01:45 PM
AI summary
当批量新增或修改数据量过大时,PostgreSQL 会报错 "extended protocol limited to 65535 parameters",因为其扩展协议限制每个查询的参数数量不超过 65535 个。解决方法是分批进行创建,Gorm 提供了 CreateInBatches 方法来实现。需要根据实际情况调整 batchSize 的大小。
Status
今天做业务时,在自测时发现,导入数据过多,比如 400000 多条数据时,会报这样一个结果:
检查了之后,发现这个错误是 PostgreSQL 报的,其原因在于 PostgreSQL 的扩展协议限制每个查询的参数数量不超过 65535 个。这是一个硬限制,无法通过调整配置进行改变。解决的办法很简单,就是分批进行创建,如果懒得实现,其实 Gorm 也提供对应的语法糖:
其中,CreateInBatches 方法的实现如下:
其中,batchSize 的大小,需要根据实际的业务场景、网络延迟、内容和数据库环境等条件进行测试,找出最合适的值。
 

© 孙东辉 2022 - 2024