Understanding the Error
ERROR 1114 (HY000): The table 'tablename' is full
This usually means the storage engine limit is reached.
For MEMORY Tables
MEMORY tables have a max_rows limit:
ALTER TABLE tablename MAX_ROWS=1000000;
Or convert to InnoDB:
ALTER TABLE tablename ENGINE=InnoDB;
For MyISAM Tables
Increase max size or convert to InnoDB:
ALTER TABLE tablename ENGINE=InnoDB;
For InnoDB Tables
Check if innodb_data_file_path has hit max size:
SHOW VARIABLES LIKE 'innodb_data_file_path';
Auto-extend is recommended:
innodb_data_file_path = ibdata1:10M:autoextend
Filesystem Full
MySQL can't write to disk:
df -h
df -i
Check MySQL data directory:
du -sh /var/lib/mysql/*
Per-table Tablespaces
Enable innodb_file_per_table:
SET GLOBAL innodb_file_per_table=ON;
Optimize table to reclaim space:
OPTIMIZE TABLE tablename;
Disk Quota Exceeded
quota -u mysql