Quick answer
MySQL documents columns per table as 4,096 hard limit; InnoDB limit 1,017. Effective counts can be lower because row size and hidden generated columns also apply.
Verified Aug 22, 2026Official source
Current limits
| Constraint | Current value | Scope | Verified source |
|---|---|---|---|
| columns per tableEffective counts can be lower because row size and hidden generated columns also apply. | 4,096 hard limit; InnoDB limit 1,017 | MySQL 8.4 | OracleAug 22, 2026 |
Why does this limit matter?
Generated functional-index columns and wide schemas can consume the engine-specific count unexpectedly.
This value is scoped to MySQL 8.4; a different plan, runtime, model, endpoint, region, or account can produce a different effective constraint.
What should you check?
- Inspect storage engine, visible and hidden columns, indexes, and computed row width.
- Confirm the exact plan, model, runtime, endpoint, region, and account that serve the failing workload.
- Record the observed value, response headers or configuration, timestamp, and source without logging secrets.
Important caveats
- Reaching hundreds of columns often creates operational problems before the theoretical hard limit.
- Treat the official source and live account configuration as authoritative if they differ from this verified snapshot.
HyperObserve reports the documented platform constraint. Your application, SDK, gateway, provider, region, or account can impose a lower effective limit.
Related