I have a MySQL database table with 31,107,600 rows in it. It's using InnoDB. This is on a CentOS 7 system.

The table has these columns:

  • id
  • timestamp
  • mac
  • data
  • direction
  • site_id

I want to create an index, so I run this command:

ALTER TABLE MY_TABLE ADD INDEX idx_my_index (mac, site_id, timestamp);

It takes about 30 seconds, and then gives me this:

ERROR 1114 (HY000): The table 'MY_TABLE' is full

My MySQL is using the default /var/lib/mysql to store its data. Currently, the partition that folder is on has 12GB free, and my database is only 2.7 GB in size, so as far as I can tell, it should have more than enough space.

Why am I seeing this error? Online searches show that perhaps it is using a temporary table, and hitting restrictions on the size of the temporary table? Could it be that? Or something else? How can I confirm this?

1 Answer 1


While the ALTER TABLE statement is running, observe your space usage on all file systems using df. See if space on another file system, particularly a small one, is rapidly decreasing, e.g. if you have /tmp on tmpfs.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .