B.5.2.11 The table is full

If a table-full error occurs, it may be that the disk is full
or that the table has reached its maximum size. The effective
maximum table size for MySQL databases is usually determined
by operating system constraints on file sizes, not by MySQL
internal limits. See Section C.10.3, “Limits on Table Size”.

If you get an error like The table '#sql-4e0b_462' is full when attempting to run an alter or optimize statement on an InnoDb table check your innodb_data_file_path setting. It is possible to set a Max on that file, in which case the InnoDb table can fill up even though you have plenty of diskspace and you will get the above error.

Since the error message is reported on a temporary table, I found this difficult to track down.

Posted by
Marius Siegas
on
May 19, 2008

In my.cnf I had (this is by default on gentoo linux):

innodb_data_file_path = ibdata1:10M:autoextend:max:128M

Which meant that the innodb file size is 10M and it is being automatically extended but only until it reaches 128M and then we have a problem. I was trying to import some huge database dump, then the problem occured that said "The table 'foo' is full" and after that even my old databases stopped working with the same error when updating. After some searching I found this page, and since my max is 2G and I'm happy ;). Good luck to you too!

Posted by
Chris Calender
on
September 4, 2009

Note that in 5.0 (pre-5.0.85) and in 5.1 (pre-5.1.38), you could receive the "table is full" error for an InnoDB table if InnoDB runs out of undo slots (bug #18828).

Posted by
Manish Joshi
on
March 23, 2010

and you can also get this error while importing data (say huge data ..)

Posted by
Stephen DeGabriele
on
July 16, 2012

I have been struggling with table is full errors for a while and have not found any answers.

Finally stumbled on the answer myself, it had to do with INNODB settings for the innodb_log_file_size and innodb_log_buffer_size

1) shutdown mysql2) cd /var/lib/mysql 3) mkdir oldIblog4) mv ib_logfile* oldIblog5) edit /etc/my.cnf find the line innodb_log_file_size= and increase it to an appropriate value (I went to 1000MB as I am dealing with a very large dataset... 250million rows in one table). If you are not sure I suggest doubling the number every time you get a table is full error. I set innodb_log_buffer_size to 1/4 of the size of my log file and the problems went away.

Hope this helps others!

Posted by
Andrew Gray
on
April 10, 2017

We encountered a similar problem under Linux, where the datadir was mounted via NFS from a Netapp filer. A SQL Load data command was failing with the error: Database 'LOAD' operation failed: The table 'volume_uid_age' is fullThis database used InnoDB and innodb_file_per_table=1

In the filesystem we could see that the table (.ibd) was just under 2GB.

The problem was that the NFS mount was being performed with the option 'nfsvers=2'.NFS v2 has a 2GB filesize limit.