How to fix ERROR 1114: Table is full in MySQL
This error indicates that MySQL cannot write to a table because it has reached its size limit or the disk is full. The fix depends on the underlying cause: insufficient disk space, InnoDB configuration limits, or MEMORY table size constraints.
Quick fix
Fixes ERROR 1114: Table is full
df -h /var/lib/mysql- Check available disk space
- Free up disk space
- Verify MySQL can write again
- Check InnoDB configuration (if disk space was not the issue)
df -h /var/lib/mysqlERROR 1114: Table is full
What this error means
ERROR 1114 occurs when MySQL attempts to write data to a table but cannot because the table has reached its maximum allowed size. This can happen for several reasons: the physical disk is completely full with no available space, the InnoDB tablespace has reached its configured maximum size limit, or a MEMORY table has exceeded its allowed size constraints. The error acts as a safeguard to prevent data corruption that could result from forced writes to full storage.
Typical symptoms
- INSERT or UPDATE queries fail with "ERROR 1114: Table is full"
- Database operations hang or timeout when writing data
- Backup or bulk import operations fail partway through
- Application cannot save new records to the database
- Only writes fail while SELECT queries continue to work
Common causes
- Disk partition containing MySQL data is completely full with no free space
- InnoDB tablespace file has reached its configured maximum size limit (e.g., innodb_data_file_path with max constraint)
- MEMORY table exceeds max_heap_table_size or tmp_table_size configuration limits
- Large backup or import operation temporarily needs double disk space
- MyISAM table has exceeded the configured maximum row pointer size
How to fix "ERROR 1114: Table is full"
Start by checking how much free space is available on the partition containing your MySQL data directory.
On Linux/macOS:
df -h /var/lib/mysqlOn Windows (PowerShell):
Get-Volume | Where-Object {$_.DriveLetter -eq 'C'} | Select-Object SizeRemaining, SizeIf the available space shows 0% or very close to it, disk space is the problem. You need to free up disk space before MySQL can write again.
If disk space is the issue, remove unnecessary files to make room:
1. Clear old MySQL binary logs (if binary logging is enabled):
mysql -u root -p -e "SHOW BINARY LOGS;"
mysql -u root -p -e "PURGE BINARY LOGS BEFORE '2024-12-01';"2. Remove old backup files:
rm -f /var/backups/mysql-*.sql.gz3. Clear temporary files in /tmp:
rm -f /tmp/mysql*4. Check and clean application logs:
find /var/log -name "*.log" -type f -mtime +30 -delete5. Consider expanding the partition if possible, or migrating MySQL data to a larger disk.
After freeing space, test that MySQL can write to the table:
mysql -u root -p -e "USE yourdatabase; INSERT INTO testtable (column) VALUES ('test');"If the INSERT succeeds, you have resolved the disk space issue.
If you have adequate disk space but still get the error, check your InnoDB configuration:
mysql -u root -p -e "SHOW VARIABLES LIKE 'innodb_data_file_path';"If the output shows a max limit like:
ibdata1:12M:autoextend:max:512MThe table has hit the configured maximum. You need to increase or remove the max limit.
Edit your MySQL configuration file (/etc/mysql/my.cnf or /etc/my.cnf):
Find the line with innodb_data_file_path and either:
Option A: Remove the max limit (recommended):
[mysqld]
innodb_data_file_path = ibdata1:12M:autoextendOption B: Increase the max limit:
[mysqld]
innodb_data_file_path = ibdata1:12M:autoextend:max:2048MThen restart MySQL:
sudo systemctl restart mysqlOr on systems using mysqld_safe:
sudo /usr/bin/mysqld_safe &Verify the setting took effect:
mysql -u root -p -e "SHOW VARIABLES LIKE 'innodb_data_file_path';"If the error occurs on MEMORY (heap) tables, check the memory configuration:
mysql -u root -p -e "SHOW VARIABLES LIKE 'max_heap_table_size'; SHOW VARIABLES LIKE 'tmp_table_size';"To increase these limits, edit your MySQL configuration:
[mysqld]
max_heap_table_size = 256M
tmp_table_size = 256MThen restart MySQL and verify:
sudo systemctl restart mysql
mysql -u root -p -e "SHOW VARIABLES LIKE 'max_heap_table_size';"Advanced notes
For MyISAM tables, you can control the maximum table size via the MAX_ROWS option at table creation time or by adjusting myisam_data_pointer_size. By default, MyISAM tables can grow up to 256TB; this can be increased to 65,536TB if needed. If you are running MySQL in Docker, ensure your volume mount has sufficient space for your databases—Docker filesystem defaults can sometimes cause issues with tables exceeding 1GB. For very large tables, consider partitioning them across multiple tablespace files or implementing table partitioning to distribute data more efficiently.
Frequently asked questions
- What does "ERROR 1114: Table is full" mean?
- ERROR 1114 occurs when MySQL attempts to write data to a table but cannot because the table has reached its maximum allowed size. This can happen for several reasons: the physical disk is completely full with no available space, the InnoDB tablespace has reached its configured maximum size limit, or a MEMORY table has exceeded its allowed size constraints. The error acts as a safeguard to prevent data corruption that could result from forced writes to full storage.
- How do I fix "ERROR 1114: Table is full"?
- This error indicates that MySQL cannot write to a table because it has reached its size limit or the disk is full. The fix depends on the underlying cause: insufficient disk space, InnoDB configuration limits, or MEMORY table size constraints.
- What causes "ERROR 1114: Table is full"?
- Disk partition containing MySQL data is completely full with no free space InnoDB tablespace file has reached its configured maximum size limit (e.g., innodb_data_file_path with max constraint) MEMORY table exceeds max_heap_table_size or tmp_table_size configuration limits
- Is the "ERROR 1114: Table is full" error serious?
- Yes. This is a high-severity error that usually blocks work until it is fixed, but the steps above resolve it.
Official resources & further reading
- 📚MySQL Official Documentation
- 📖MySQL 8.0 Reference Manual: The table is full(Official Docs)
- 📖MySQL 8.0 Reference Manual: Limits on Table Size(Official Docs)