Mysql error the table is full

error 1114 (hy000): the table is full happens mainly due to server running out of disk space or wrong MySQL configuration limits like innodb_data_file_path.

Databases work as the storage for many Web applications. Maintaining these applications involve frequent export or import of data. Unfortunately, SQL server can report errors during this import/export process.

One such error is error 1114 (hy000): the table is full. The exact reason for the error can be disk space shortage or wrong database server settings.

At Bobcares, we often get requests from customers to fix database errors as part of our Outsourced Technical Support Services.

Today, we’ll see the causes for “error 1114 (hy000): the table is full” and how our Support Engineers fix them.

Where do we see table full error?

Firstly, let’s take a look at the typical scenarios where we see the error “1114 (hy000): the table is full”. 

This error primarily happens in the process of exporting and importing sql files into databases. It can be either via utilities like phpMyAdmin or even via command line.

Recently, a customer reported this error when he was trying to import a database via phpMyAdmin. The error said:

ERROR 1114 (HY000) at line 12345: The table 'abc' is full.

Surprisingly, the table it was complaining about was empty and contained no rows. Therefore, the natural question comes:

Why then table full error?

[Do you know that proactive server management can reduce MySQL errors drastically? Just signup with us and we’ll take care of your servers 24×7]

What causes “error 1114 (hy000): the table is full”?

Usually, the description for the error is often misleading as it says database table being full. But, the actual reason for the error may vary.

Let’s now see the typical causes for the error “1114 (hy000): the table is full.

1. Disk Full

From our experience in managing databases, our Dedicated Engineers often see the table full error due to disk full issues. If a server partition or disk has used up all the space and MySQL still attempts to insert data into the table, it will fail with error 1114.

Similarly, this error can also happen during backup of large databases too. Here, the backup process create large files and can cause space constraints in the disk. Backup file along with original database will result in doubling the size required for the table.

2. innodb_data_file_path limits

When the disk space of the server is all okay, and still you get error 1114 (hy000): the table is full, it means the problem will be with the Database server configuration settings.

For instance, on a database server with storage engine set as InnoDB , the parameter innodb_data_file_path often cause this error.

When the innodb_data_file_path in the my.cnf file is set as per the entry below, the ibdata1 file can grow only up to a maximum size of 512M.

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

And, when the file size grows over this limit, it ends up in the error 1114 (hy000): the table is full.

[Are you getting error 1114 (hy000): the table is full? Leave it for us, we are here to help you.]

How to fix “error 1114 (hy000): the table is full”?

So far, we saw the possible reasons for the error 1114. Now, let’s take a look on how our Dedicated Engineers resolve this and make database server working.

1. Fix disk space

First and foremost, we check the disk usage of the server using the command:

df -h

This would show up the disk that contains the least free space. Lack of free space on the disks can even stop the MySQL server. That’s why, our Support Engineers quickly try to clear out some disk space by removing unwanted backup files, log files and so on.

Additionally, to avoid problems with database restore, we always ensure enough free space in the partition that holds MySQL data directory. This applies to the /tmp partition too where MySQL store the temporary files.

2. Fix SQL server settings

Further, we fix the Database server settings. This involves setting the right value for the MySQL variables in the configuration file at /etc/my.cnf.

For instance, our Dedicated Engineers often do not put a maximum limit cap for ibdata1 file by adding the following entry in MySQL configuration.

innodb_data_file_path = ibdata1:10M:autoextend

Similarly, we do an analysis of  the MySQL database usage and set the tmp_table_size, max_heap_table_size in the my.cnf file.

3. Recreating indexes

Indexes in databases helps SQL server to find the exact row or rows associated with the key values quickly and efficiently. Again, from our experience, when importing databases via phpmyAdmin, recreating the indexes at a different point can solve the table full error.

Conclusion

In short, error 1114 (hy000): the table is full happens mainly due to server running out of disk space or wrong MySQL configuration limits. Today, we saw the top causes for the error and how our Support Engineers solve them in live servers.

PREVENT YOUR SERVER FROM CRASHING!

Never again lose customers to poor server speed! Let us help you.

Our server experts will monitor & maintain your server 24/7 so that it remains lightning fast and secure.

GET STARTED

var google_conversion_label = «owonCMyG5nEQ0aD71QM»;

The MySQL ERROR 1114 can be triggered when you try to perform an INSERT statement on a table.

The following example shows how the error happens when I try to insert data into the users table:

mysql> INSERT INTO `users` VALUES (15, "Nathan", "Sebhastian")

ERROR 1114 (HY000): The table users is full

To fix this error, you need to first check the disk space in where your MySQL server is installed and see if the partition is really full.

You can do so by running the df -h command from the Terminal. Here’s an example partitions listed from my server:

$ df -h

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1       200G   67G  134G  34% /
tmpfs            16G   34M   16G   1% /dev/shm
/dev/vdb1       800G  446G  354G  56% /tmp
tmpfs            16G  1.6G   15G  11% /run/dbus

If you see any disk on the list with the Use% value reaching around 90%, then you need to check if your mysql is installed on that disk.

Most likely you will have mysql located in /var/www/mysql directory, so you need to make sure the main mounted partition at / has the Use% lower than 80%.

But if you’re Use% values are low like in the example above, then the error is not caused by the disk partition.

You need to check on your MySQL configuration file next.

Fix MySQL table is full error from the configuration file

You need to open your MySQL config file and look at the configuration for innodb_data_file_path.

The default value may be as follows:

innodb_data_file_path = ibdata1:12M:autoextend:max:256M

The values of innodb_data_file_path option above will create an ibdata1 directory that stores all critical information for your InnoDB-based tables.

The maximum size of data you can store in your InnoDB tables are 256MB as shown in the autoextend:max:256M in the option above.

To resolve the MySQL table is full issue, try increasing the size of your autoextend parameter to 512M like this:

innodb_data_file_path = ibdata1:12M:autoextend:max:512M

Alternatively, you can also just write autoextend without specifying the maximum size to allow InnoDB tables to grow until the disk size is full:

innodb_data_file_path = ibdata1:12M:autoextend

Once done, save your configuration file and restart your MySQL server:

sudo service mysql stop
sudo service mysql start

Try to connect and insert the data into your database table again. It should work this time.

If you’re using the MyISAM engine for your tables, then MySQL permits each MyISAM table to grow up to 256TB by default.

The MyISAM engine limit can still be increased up to 65,536TB if you need to. Check out the official MySQL documentation on table size limits on how to do that.

Good luck resolving the issue! 👍

At XTIVIA, we have encountered the MySQL Error 1114, “table is full” on quite a few occasions. The description for the error is usually misleading as it implies that a table has reached or exceeded a maximum set limitation. Tables utilizing the InnoDB storage engine do have inherent maximums although in these cases, the 64TB limit for InnoDB tables with InnoDB page sizes of 16KB was not the issue.

It is possible to impose user-defined maximums by explicitly defining the variable innodb_data_file_path. For example setting it to a value of ibdata1:10M:autoextend:max:256M will limit the data in InnoDB tables to a total of 256MB. Removing the max:256MB term will eliminate the imposed maximum.

In most cases, ERROR 1114 results from lack of disk space. If a partition, disk, or LUN has been exhausted of all space and MySQL attempts to insert data into the table, it will fail with Error 1114.

One example where this error was encountered was during a backup on a large database. Although there was plenty of disk space available on the partition, as mysqldump began backing up one particularly large table, it sent hundreds of thousands of errors reporting that the table was full. Again, the table was not full as no limits were set and the table was not near the 64TB maximum. The problem was that as mysqldump ran, it was creating a large file on the same partition where the data existed thereby doubling the size required for the table.

Adding more disk space was not an option under the time crunch and the maintenance window available for the client. The issue was resolved by running mysqldump on the table in increments. By adding a “–where” option in the mysqldump command, the backup was run stepwise on smaller chunks of data enabling the backup file and data files to exist in the same partition without running out of space. Given the autoincrement primary key and total number of rows, the table was divided into ten groups by rows to dump separately. Each ran successfully, the errors halted and a successful backup was therefore performed on the entire database.

Summary

MySQL reports a “Table is full” error where, in most cases, the issue involves running out of disk space. By default, limits are not imposed on MySQL tables however there are relatively large maximums inherent to the database and those maximums have not been the issue in our experience. If you are seeing this error, first check the disk space on the partition to ensure that this is not the cause of the error. If disk space is not a concern, check the variable innodb_data_file_path to see if a maximum table size has been set explicitly.

Понравилась статья? Поделить с друзьями:
  • Mysql error safe update mode
  • Mysql error number 1267
  • Mysql error number 1130
  • Mysql error number 1114
  • Mysql error number 1062