diff --git a/internal/apps/project/constants.go b/internal/apps/project/constants.go index 253ebe9..05d2a0d 100644 --- a/internal/apps/project/constants.go +++ b/internal/apps/project/constants.go @@ -26,6 +26,8 @@ package project const ( ProjectObjKey = "project_obj" + // projectItemInsertBatchSize limits batch inserts to avoid exceeding MySQL's placeholder ceiling. + projectItemInsertBatchSize = 1000 ) type DistributionType int8 diff --git a/internal/apps/project/models.go b/internal/apps/project/models.go index 5b76df3..1514f30 100644 --- a/internal/apps/project/models.go +++ b/internal/apps/project/models.go @@ -239,7 +239,7 @@ func (p *Project) CreateItems(ctx context.Context, tx *gorm.DB, items []string, projectItems[i] = wi.item } - if err := tx.Create(&projectItems).Error; err != nil { + if err := tx.CreateInBatches(&projectItems, projectItemInsertBatchSize).Error; err != nil { return err } @@ -259,7 +259,7 @@ func (p *Project) CreateItems(ctx context.Context, tx *gorm.DB, items []string, projectItems[i] = ProjectItem{ProjectID: p.ID, Content: content} } - if err := tx.Create(&projectItems).Error; err != nil { + if err := tx.CreateInBatches(&projectItems, projectItemInsertBatchSize).Error; err != nil { return err }