首页 文章

当我试图改变一张 table 时,我得到了“ table 'some table'已经满了” . 为什么?

提问于
浏览
0

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

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

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

我've read this (and other) questions but I couldn'找到一个适合我案例的答案ERROR 1114 (HY000): The table is full

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

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

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

1 回答

  • 0

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

    当您尝试 ALTER 表时,MySQL使用临时目录来制作表的副本 . 您必须这样做才能添加列 . 但是一个 /dev/shm tempdir可以适应tempdir . 因此,MySQL抗议你的表是'full' - 这意味着它太大了 .

    按照这篇文章中的说明,将数据库守护程序的临时目录放在具有大量空间的硬盘驱动器上 .

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

相关问题