{"record":{"id":"cced321a6b5d9a6c","repo":"flipped-aurora/gin-vue-admin","slug":"error-cced32","errorCode":null,"errorMessage":"删除不存在的包记录失败!","messagePattern":"删除不存在的包记录失败!","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/service/system/auto_code_package.go","lineNumber":261,"sourceCode":"\t\texistingPackageNames[server[i].PackageName] = true\n\t}\n\tfor i := 0; i < len(plugin); i++ {\n\t\texistingPackageNames[plugin[i].PackageName] = true\n\t}\n\n\t// 找出需要删除的数据库记录\n\tdeleteEntityIDs := []uint{}\n\tfor i := 0; i < len(entities); i++ {\n\t\tif !existingPackageNames[entities[i].PackageName] {\n\t\t\tdeleteEntityIDs = append(deleteEntityIDs, entities[i].ID)\n\t\t}\n\t}\n\n\t// 删除数据库中不存在文件的记录\n\tif len(deleteEntityIDs) > 0 {\n\t\terr = global.GVA_DB.WithContext(ctx).Delete(&model.SysAutoCodePackage{}, deleteEntityIDs).Error\n\t\tif err != nil {\n\t\t\treturn nil, errors.Wrap(err, \"删除不存在的包记录失败!\")\n\t\t}\n\t\t// 从返回结果中移除已删除的记录\n\t\tfilteredEntities := []model.SysAutoCodePackage{}\n\t\tfor i := 0; i < len(entities); i++ {\n\t\t\tif existingPackageNames[entities[i].PackageName] {\n\t\t\t\tfilteredEntities = append(filteredEntities, entities[i])\n\t\t\t}\n\t\t}\n\t\tentities = filteredEntities\n\t}\n\n\treturn entities, nil\n}\n\n// Templates 获取所有模版文件夹\n// @author: [SliverHorn](https://github.com/SliverHorn)\nfunc (s *autoCodePackage) Templates(ctx context.Context) ([]string, error) {\n\ttemplates := make([]string, 0)","sourceCodeStart":243,"sourceCodeEnd":279,"githubUrl":"https://github.com/flipped-aurora/gin-vue-admin/blob/3136500ef380842b0eb6c4daa87c3f8a47fcf9e0/server/service/system/auto_code_package.go#L243-L279","documentation":"The final sync step deletes DB package records whose directories no longer exist on disk (deleteEntityIDs), then filters them out of the returned list. This error wraps a failed batch DELETE of those stale rows.","triggerScenarios":"Calling autoCodePackage.All when directories were removed on disk and the batch delete of their DB rows fails — DB connection lost mid-sync, table missing, lock timeout, or foreign-key restriction from related auto-code records.","commonSituations":"Long-running sync hitting a lock timeout on many stale rows; DB restarted during reconciliation; FK constraint from another table referencing package IDs; read-only database.","solutions":["Inspect the wrapped inner error for lock/FK/connectivity cause","Restore DB connectivity and retry the sync","Remove or relax FK constraints referencing sys_auto_code_packages, or delete dependents first","Chunk deleteEntityIDs into smaller batches to reduce lock scope"],"exampleFix":"// before: one large delete can lock too long\nerr = global.GVA_DB.WithContext(ctx).Delete(&model.SysAutoCodePackage{}, deleteEntityIDs).Error\n// after: chunked delete\nfor i := 0; i < len(deleteEntityIDs); i += 100 {\n    end := i + 100\n    if end > len(deleteEntityIDs) {\n        end = len(deleteEntityIDs)\n    }\n    if err = global.GVA_DB.WithContext(ctx).\n        Delete(&model.SysAutoCodePackage{}, deleteEntityIDs[i:end]).Error; err != nil {\n        return nil, errors.Wrap(err, \"删除不存在的包记录失败!\")\n    }\n}","handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"err := global.GVA_DB.WithContext(ctx).Delete(&model.SysAutoCodePackage{}, deleteEntityIDs).Error\nif err != nil {\n    var mysqlErr *mysql.MySQLError\n    if errors.As(err, &mysqlErr) && (mysqlErr.Number == 1213 || mysqlErr.Number == 1205) {\n        time.Sleep(2 * time.Second)\n        err = global.GVA_DB.WithContext(ctx).Delete(&model.SysAutoCodePackage{}, deleteEntityIDs).Error\n    }\n    if err != nil {\n        return nil, errors.Wrap(err, \"删除不存在的包记录失败!\")\n    }\n}","preventionTips":["Delete stale records in small chunks to reduce lock contention","Check for foreign keys referencing package IDs before bulk cleanup","Retry transient lock/deadlock errors with backoff","Run the sync endpoint during low-traffic windows"],"tags":["database","gorm","delete","sync"],"backgroundTag":"gorm-delete-failed","analyzedSha":"3136500ef380842b0eb6c4daa87c3f8a47fcf9e0","analyzedAt":"2026-08-31T13:50:02.721Z","schemaVersion":2},"datasetVersion":"2026-08-31T19:17:28.585Z"}