添加ORDER BY时出现MySQL错误126

时间:2015-07-17 09:33:36

标签: mysql

我正试图弄清楚我一直遇到的问题。我的表中只有大约1m的记录,并且大约有~10个连接。

我不会发布查询,因为我认为这不是问题的一部分。基本上,如果没有ORDER BY m0_.id子句,查询将运行并以0.0056秒的形式返回结果。哪个不错。但是当我添加ORDER BY时,查询失败并出现以下错误:

#126 - Incorrect key file for table '/tmp/#sql_527_0.MYI'; try to repair it

所以我一直在阅读,显然大多数时候,这个问题与空间有关。但那不可能(可以吗?),因为我有30Gb免费,整个数据库只有200Mb。所以我走得更远,找到了sort_buffer_size选项。所以我运行SET GLOBAL sort_buffer_size = 18446744073709551615apparently是我平台的最大值。果然,运行SHOW VARIABLES LIKE 'sort_buffer%';会返回

+------------------+----------------------+
| Variable_name    | Value                |
+------------------+----------------------+
| sort_buffer_size | 18446744073709551615 |
+------------------+----------------------+
1 row in set (0.00 sec)

我甚至尝试将查询限制为1个结果,但没有骰子。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我认为您最好创建此表的克隆,然后重命名它们:

  1. 获取create table query:

    SHOW CREATE TABLE table_name;

  2. 从(1)步骤更改table_name到table_name_new

  3. 运行查询
  4. 将数据从原点复制到新:

    INSERT INTO table_name_new VALUES(SELECT * FROM table_name);

  5. 尝试使用table_name_new选择

  6. 或尝试在不添加ORDER BY的情况下创建重型查询的视图:

    CREATE VIEW view_heavy_query AS HERE GOES YOUR HEAVY QUERY WITH JOINS;
    

    然后执行以下查询:

    SELECT * FROM view_heavy_query ORDER BY field;