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.
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.
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';"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.
EE_WRITE (3): Error writing file
How to fix "EE_WRITE (3): Error writing file" in MySQL
CR_PARAMS_NOT_BOUND (2031): No data supplied for parameters
How to fix "CR_PARAMS_NOT_BOUND (2031): No data supplied for parameters" in MySQL
CR_DNS_SRV_LOOKUP_FAILED (2070): DNS SRV lookup failed
How to fix "CR_DNS_SRV_LOOKUP_FAILED (2070): DNS SRV lookup failed" in MySQL
ERROR 1146: Table 'database.table' doesn't exist
How to fix "ERROR 1146: Table doesn't exist" in MySQL
ERROR 1040: Too many connections
How to fix "ERROR 1040: Too many connections" in MySQL