ERROR 126 (HY000) Incorrect key file for table '/tmp/#sql_ccc_0.MYI'; try to repair it

在一次进行复杂查询之后控制台抛出

1
Incorrect key file for table '/tmp/#sql_ccc_0.MYI'; try to repair it

SQL语句在GUI的终端可以正常的运行,部署到机器上怎么就不行呢?各种搜索发现是临时目录的空间不足,或者临时表的空间设置过小.

使用如下命令进行查看:

1
mysql> show variables like '%tmp%';

  1. 首先查看tmpdir的目录大小,如果磁盘已满,清理控件或者设置临时目录到一个比较大的磁盘中,重新设置tmpdir需要重启服务.通过如下参数或者在配置文件中配置tmpdir都可以达到目的(不知道为什么我在my.cnf中进行设置不能生效,又知道的小伙伴请交流告知原因,邮箱:253015418@qq.com)

    1
    /bin/sh /usr/bin/mysqld_safe --defaults-file=/etc/my.cnf --datadir=/data/mysql/3307/ --port=3307 --tmpdir=/mnt/tmp/mysql/ &
  2. 如果还是抛出错误,设置临时表空间大小,并再次尝试运行.

    1
    2
    mysql> select 524288000/1024/1024/1024; # 524288000是获取tmp_table_size的大小,换算出有多少G
    mysql> set global tmp_table_size =5368709120; # 5G