{"record":{"id":"87e5eba5306568e3","repo":"influxdata/influxdb","slug":"schema-update-for-table-table-name-would-exceed-the-tag","errorCode":null,"errorMessage":"Schema update for table '{table_name}' would exceed the tag column limit: proposed schema would have {attempted} tag columns, but the limit is {limit}","messagePattern":"Schema update for table '(.+?)' would exceed the tag column limit: proposed schema would have (.+?) tag columns, but the limit is (.+?)","errorType":"validation","errorClass":"CatalogError","httpStatus":400,"severity":"error","filePath":"influxdb3_catalog/src/error.rs","lineNumber":140,"sourceCode":"    InvalidNodeRegistration,\n\n    #[error(\"invalid node name ({0})\")]\n    InvalidNodeName(String),\n\n    #[error(\"invalid node spec: {0}\")]\n    InvalidNodeSpec(#[source] anyhow::Error),\n\n    #[error(\n        \"Schema update for table '{table_name}' would exceed the column limit: \\\n        proposed schema update would have {attempted} columns, but the limit is {limit}\"\n    )]\n    TooManyColumns {\n        table_name: TruncatedTableName,\n        attempted: usize,\n        limit: usize,\n    },\n\n    #[error(\n        \"Schema update for table '{table_name}' would exceed the tag column limit: \\\n        proposed schema would have {attempted} tag columns, but the limit is {limit}\"\n    )]\n    TooManyTagColumns {\n        table_name: TruncatedTableName,\n        attempted: usize,\n        limit: usize,\n    },\n\n    #[error(\n        \"Update to schema would exceed number of tables limit: attempted to create table but already have {current} table(s) (limit: {limit})\"\n    )]\n    TooManyTables { current: usize, limit: usize },\n\n    #[error(\"Adding a new database would exceed limit of {0} databases\")]\n    TooManyDbs(usize),\n\n    #[error(","sourceCodeStart":122,"sourceCodeEnd":158,"githubUrl":"https://github.com/influxdata/influxdb/blob/06200ef96ba82c5f6727e5038a83af8e722c6875/influxdb3_catalog/src/error.rs#L122-L158","documentation":"Thrown when a schema update would give a table more tag columns than the catalog allows. Tags are indexed columns, so the limit is lower and stricter than the general column limit. The update is rejected before any data is written.","triggerScenarios":"A line-protocol write containing more distinct tag keys than allowed on the target table, or DDL that adds tag columns pushing the count over the limit. `attempted` is the resulting tag column count, `limit` the max.","commonSituations":"Instruments/agents emitting per-host or per-device attributes as tags; users mistaking high-cardinality dimensions for tags; Terraform/telegraf configurations with large tag sets; schemaless migration where every dimension became a tag.","solutions":["Demote non-indexed, high-cardinality attributes from tags to fields","Consolidate several tags into a single compound tag (e.g. region-zone) or drop redundant tags","Create a new table with a leaner tag schema and migrate data","Raise the tag column limit in server configuration if genuinely needed"],"exampleFix":"// before: too many tags\ncpu,host=h1,region=us,az=1a,dc=dc1,rack=r7,os=linux,arch=amd64 usage=80\n// after: fold tags into one or move to fields\ncpu,host=h1,env=us-1a usage=80,os=\"linux\",arch=\"amd64\"","handlingStrategy":"validation","validationCode":"const TAG_LIMIT = 200; // instance-configured\nconst newTags = Object.keys(point.tags);\nif (existingTagCount + newTags.length > TAG_LIMIT) {\n  throw new Error(`tag limit ${TAG_LIMIT} would be exceeded`);\n}","typeGuard":"function isTagSet(obj: unknown): obj is Record<string, string> { return typeof obj === 'object' && obj !== null && Object.values(obj).every(v => typeof v === 'string'); }","tryCatchPattern":null,"preventionTips":["Only tag data you query/filter on; everything else goes in fields","Cap tag keys at the collector (whitelist of allowed tags)","Beware tags derived from user input or labels — they multiply fast","Review tag cardinality and count as part of schema design"],"tags":["schema","tag-limit","catalog","time-series"],"backgroundTag":"value-out-of-range","analyzedSha":"06200ef96ba82c5f6727e5038a83af8e722c6875","analyzedAt":"2026-09-19T12:55:30.003Z","contentChangedAt":"2026-09-19T12:55:30.003Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}