My Oracle Support Banner

Table is Full Error for InnoDB Tables (Doc ID 1356573.1)

Last updated on APRIL 26, 2018

Applies to:

MySQL Server - Version 4.0 and later
Information in this document applies to any platform.
***Checked for relevance on 22-jun-2014***

Symptoms

There are two variations of this error happening:

Versions 4.x, 5.0.84 and earlier, 5.1.37 and earlier, and 5.1.40 with InnoDB plugin and earlier

When running one of the following versions of MySQL Server:


When having more than 1023 active transactions and error message "Table is Full" is returned to the client. Sometimes an assertion error is happening instead. The error log will contain a more descriptive error message:

110912 14:52:14 InnoDB: Warning: cannot find a free slot for an undo log. Do you have too
InnoDB: many active transactions running concurrently?
  

All versions using fixed size InnoDB tablespace and not using innodb_file_per_table

With the InnoDB tablespace configured to a fix size and not using the innodb_file_per_table option, when attempting to insert data into InnoDB tables, the following error occurs:

The table '<tablename>' is full

where <tablename> is the name of the table. The corresponding MySQL error code and SQL state are:


The error displayed in the MySQL error log depends on the version of the InnoDB storage engine in use:

This error can occur even if SHOW TABLE STATUS or SELECT * FROM information_schema.TABLES show that InnoDB tables do have Data_free greater than 0.

Reproducing the Issue:

The issue can be reproduced at will with the following steps:

  1. Start with a fresh installation of MySQL
  2. Before starting MySQL the first time, have a setting like this in your my.cnf
    innodb_data_file_path = ibdata1:100M
    and ensure that innodb_file_per_table is not switched on
  3. Start MySQL and let InnoDB create the data file
  4. Log in to MySQL and run:
    CREATE DATABASE innodbtest;
    use innodbtest
    CREATE TABLE t1 (id mediumint unsigned NOT NULL auto_increment PRIMARY KEY) ENGINE=InnoDB;
  5. Keep inserting rows into the table until the query returns with The table 't1' is full.
  6. The error message returned when running out of space is something similar to:

    SQLSTATE[HY000]: General error: 1114 The table 't1' is full

  7. Run SHOW TABLE STATUS:
    mysql> SHOW TABLE STATUS LIKE 't1'\G
    *************************** 1. row ***************************
               Name: t1
             Engine: InnoDB
            Version: 10
         Row_format: Compact
               Rows: 3918789
     Avg_row_length: 23
        Data_length: 90800128
    Max_data_length: 0
       Index_length: 0
     Data_free: 4194304
     Auto_increment: 3920001
        Create_time: 2011-09-08 12:14:35
        Update_time: NULL
         Check_time: NULL
          Collation: latin1_swedish_ci
           Checksum: NULL
     Create_options:
            Comment:
    1 row in set (0.00 sec)

    Notice that Data_free is still 4194304 even though no more data is actually available.

All versions using an autoextend InnoDB tablespace including using innodb_file_per_table

A common symptom in the MySQL error log when a Table is full error is:

2014-09-15 08:33:38 7f28aeb8a700 InnoDB: Error: Write to file /mysql/data/ibdata1 failed at offset 20971520.
InnoDB: 1048576 bytes should have been written, only -1 were written.
InnoDB: Operating system error number 28.
InnoDB: Check that your OS and file system support files of this size.
InnoDB: Check also that the disk is not full or a disk quota exceeded.
InnoDB: Error number 28 means 'No space left on device'.
InnoDB: Some operating system error numbers are described at
InnoDB: http://dev.mysql.com/doc/refman/5.6/en/operating-system-error-codes.html
2014-09-15 08:33:38 7101 [ERROR] /usr/sbin/mysqld: The table 't1' is full
2014-09-15 08:33:39 7101 [ERROR] /usr/sbin/mysqld: The table 't1' is full

On Windows the error may look like:

2014-09-15 10:04:06 12AB  InnoDB: Encountered a problem with file C:\ProgramData\MySQL\ibdata1
2014-09-15 10:04:06 12AB  InnoDB: Disk is full. Try to clean the disk to free space.
2014-09-15 10:04:06 13D7 [ERROR] C:\Program Files\MySQL\bin\mysqld.exe: The table 't1' is full 

 

The above errors are for the shared tablespace. A similar error can occur for a per table tablespace.

 

Cause

To view full details, sign in with your My Oracle Support account.

Don't have a My Oracle Support account? Click to get started!


In this Document
Symptoms
 Versions 4.x, 5.0.84 and earlier, 5.1.37 and earlier, and 5.1.40 with InnoDB plugin and earlier
 All versions using fixed size InnoDB tablespace and not using innodb_file_per_table
 Reproducing the Issue:
 All versions using an autoextend InnoDB tablespace including using innodb_file_per_table
Cause
 Versions 4.x, 5.0.84 and earlier, 5.1.37 and earlier, and 5.1.40 with InnoDB plugin and earlier
 All versions using fixed size InnoDB tablespace and not using innodb_file_per_table
 All versions using an autoextend InnoDB tablespace including using innodb_file_per_table
Solution
 Versions 4.x, 5.0.84 and earlier, 5.1.37 and earlier, and 5.1.40 with InnoDB plugin and earlier
 All versions using fixed size InnoDB tablespace and not using innodb_file_per_table
 All versions using an autoextend InnoDB tablespace including using innodb_file_per_table
References


This document is being delivered to you via Oracle Support's Rapid Visibility (RaV) process and therefore has not been subject to an independent technical review.
My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.