1114ERRORTier 3 — Handle with care✅ HIGH confidenceThe table is full
🔴 Production Risk Error
Error 1114 on InnoDB in production means the database cannot accept writes. This is a critical incident requiring immediate disk space triage or tablespace expansion. Do not attempt to restart the server until space is available, as InnoDB recovery also requires disk I/O.
What this means
Error 1114 is returned when a write operation cannot complete because the storage engine has run out of space. For InnoDB this typically means the tablespace (ibdata1 or a per-table .ibd file) cannot grow, either because the filesystem is full or because innodb_data_file_path has a fixed maximum size. For MEMORY tables it means the max_heap_table_size limit has been reached.
Why it happens
- 1The filesystem containing InnoDB datafiles has run out of space
- 2innodb_data_file_path is configured with a fixed maximum size (e.g., ibdata1:10M:autoextend:max:100M) and has been reached
- 3A MEMORY engine table has exceeded max_heap_table_size
- 4The disk quota for the MySQL data directory has been reached
How to reproduce
A MEMORY table exceeds its configured size limit.
SET max_heap_table_size = 1024 * 1024; -- 1 MB limit
CREATE TABLE tmp (data VARCHAR(1000)) ENGINE=MEMORY;
-- Insert until full:
INSERT INTO tmp SELECT REPEAT('x', 1000) FROM information_schema.columns LIMIT 2000;Fix 1: Free disk space or expand the InnoDB tablespace
When the filesystem or tablespace is full.
-- Check datafile sizes:
SELECT FILE_NAME, TABLESPACE_NAME, TOTAL_EXTENTS * EXTENT_SIZE / 1024 / 1024 AS size_mb
FROM information_schema.FILES
WHERE FILE_TYPE = 'TABLESPACE';
-- Expand by changing innodb_data_file_path in my.cnf (requires restart):
-- innodb_data_file_path = ibdata1:12M:autoextendWhy this works
Removing the :max: cap from innodb_data_file_path allows the ibdata1 file to grow beyond the previous limit. This requires editing my.cnf and restarting the server.
Fix 2: Increase max_heap_table_size for MEMORY tables
When a MEMORY table hit its size cap.
SET GLOBAL max_heap_table_size = 64 * 1024 * 1024; -- 64 MB
-- Or switch to InnoDB for persistent large temporary data:
ALTER TABLE tmp ENGINE = InnoDB;Why this works
max_heap_table_size limits each MEMORY table. Increasing it (or the session variable) before creating the table raises the limit. Alternatively, switching to InnoDB removes the size restriction at the cost of disk I/O.
What not to do
Set innodb_data_file_path to autoextend with no max on a small disk
Why it's wrong: An unbounded autoextend tablespace will eventually fill the disk, causing the server to crash rather than returning a clean error.
Version notes
MariaDB 10.6+InnoDB now defaults to file-per-table mode (innodb_file_per_table=ON), which means each table grows its own .ibd file rather than filling the shared ibdata1 tablespace, making 1114 less common for InnoDB.Sources
📚 Official docs: https://mariadb.com/kb/en/innodb-system-tablespace/
🔧 Source ref: MariaDB Server error code 1114 / ER_RECORD_FILE_FULL
📖 Further reading: MariaDB InnoDB tablespace
Confidence assessment
✅ HIGH confidence
Well-documented. InnoDB tablespace behaviour is stable.
See also
🔗 Related errors
📄 Reference pages