我的 mysql 5.6 服务器(社区版)在 debian 上遇到一些问题。
我有一张表,大约 4.5 GB。当我尝试更改此表以添加一列(默认值为 0 的 TINYINT)时,会发生错误 1114,如下所示:
ERROR 1114 (HY000): The table 'some table' is full
我已阅读此(和其他)问题,但找不到适合我的情况的答案 ERROR 1114 (HY000): The table is full
我启用了 innodb_file_per_table 参数。 我的硬盘上还有大约 50GB 的可用空间,用于存放 mysql 数据和 tmp 目录。
向该表插入新数据效果很好,但更改它却不起作用。
我的 MySQL 目录与整个系统位于同一磁盘上。 MySQL 的 tmpdir 位于 /dev/shm
中。这个目录可以以某种方式限制 mysql 进程吗?
最佳答案
MySQL 极不可能在共享内存中的临时目录下正常运行。无论如何,这都是对共享内存这一昂贵资源的极大浪费。
当您尝试ALTER
表时,MySQL 使用临时目录来创建表的副本。您必须这样做才能添加列。但是 /dev/shm
tempdir 不可能大于系统上的 RAM。所以你的表不适合临时目录。因此,MySQL 抗议您的表已“满”——这意味着它太大了。
按照本文中的说明进行操作,并将数据库守护程序的临时目录放在有大量空间的硬盘上。
关于mysql - 当尝试更改表时,我收到 "The table ' some table' is full”。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24509819/