3

I have the following InnoDB configuration option in my.cnf:

innodb_file_per_table = 1

I'm populating a table with a few million rows, but after spending a few minutes inserting, MySQL produces the following error:

ERROR 1114 (HY000): The table is full

The .ibd filesize is exactly 629145600 bytes (yep, 600*2^20). The partition containing the MySQL data is not full.

Can anyone explain what's going on here?

tjbp
  • 3,427
  • 3
  • 24
  • 35
  • 1
    possible duplicate of [ERROR 1114 (HY000): The table is full](http://stackoverflow.com/questions/730579/error-1114-hy000-the-table-is-full) – davek Nov 16 '13 at 20:18

2 Answers2

1

This is not a limitation of InnoDB - both the docs for 5.0 and 5.6 state:

On some older operating systems, files must be less than 2GB

which in any case is a not a limitiation you are running into. The combined log files can also run up to 512 GB (for version 5.6, 4GB with 5.0). Something else seems to be placing a limitation on your files: virtualised system, partition (as Rahul mentions) etc.etc.

Qantas 94 Heavy
  • 15,750
  • 31
  • 68
  • 83
davek
  • 22,499
  • 9
  • 75
  • 95
0

When inserting these records, innoDB creates numerous temporary files (in the directory specified by tmpdir in my.cnf). For me, this was set to /tmp, where I had approx 500MiB of free space. After increasing this available space (to around 1GiB) the error stopped occurring.

I tested this repeatedly by mounting a tmpfs with limited space on /tmp. With a different range of sizes I was able to get the .ibd file to a size larger than exactly 600MiB before receiving the 1114 error. 600MiB was so exact it's hard to think it was coincidence, but as far as I can tell it was.

I should point out that monitoring /tmp during the script reveals no indication of any use of it - df doesn't report its size as anywhere near full.

tjbp
  • 3,427
  • 3
  • 24
  • 35