Quick answer
MySQL documents internal row representation as 65,535 bytes. BLOB and TEXT contents are stored separately, but their pointers and overhead still count.
Verified Aug 22, 2026Official source
Current limits
| Constraint | Current value | Scope | Verified source |
|---|---|---|---|
| internal row representationBLOB and TEXT contents are stored separately, but their pointers and overhead still count. | 65,535 bytes | MySQL 8.4 | OracleAug 22, 2026 |
Why does this limit matter?
A table can fail DDL before application data arrives because declared maximum column widths exceed the internal row budget.
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?
- Calculate declared inline widths, character-set expansion, nullability, and storage-engine overhead.
- 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
- InnoDB's on-page row limit can be much smaller than the MySQL internal maximum.
- 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