当我试图改变一张桌子时,我得到“桌子'某些桌子已经满了”。为什么?

时间:2014-07-01 12:03:56

标签: mysql sql configuration shared-memory

我在debian上的mysql 5.6服务器(社区版)遇到了一些问题。

我有一张约4.5 GB的桌子。当我试图改变这个表添加一列(TINYINT默认值为0)时出现ERROR 1114,如下所示:

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

我已经阅读了这个(和其他)问题,但我找不到适合我案例的答案 ERROR 1114 (HY000): The table is full

我启用了innodb_file_per_table参数。 我还在hdd上有大约50GB的免费mysql数据和tmp目录。

将新数据插入此表可以正常工作但改变它只是不起作用。

我的MySQL目录与整个系统位于同一磁盘上。 MySQL的tmpdir位于/dev/shm。这个目录可以以某种方式限制mysql进程吗?

1 个答案:

答案 0 :(得分:0)

MySQL在共享内存中的临时目录中运行正常的可能性极小。无论如何,这是一种非常浪费的共享内存使用,这是一种昂贵的资源。

当您尝试ALTER表时,MySQL使用临时目录制作表的副本。您必须这样做才能添加列。但是/dev/shm tempdir可能比系统上的RAM大。所以你的桌子不适合tempdir。所以,MySQL抗议你的桌子已满#39; - 这意味着它太大了。

按照这篇文章中的说明操作,将数据库后台程序的临时目录放在有足够空间的硬盘上。

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