表' /tmp/#sql_18b4_0.MYI&#39 ;;的密钥文件不正确尝试修复它

时间:2015-07-08 05:59:41

标签: mysql

我从我们的开发人员那里得到了一个查询,该查询没有在服务器上执行并且给出了以下错误 -

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

我已经单独检查了所有表及其索引,一切似乎都是文件。即使我已经在其他一些查询联接中检查了所有这些表,这些联接正在获取比此查询更多的数据并且工作正常。

即使是这些表,每张表的记录也不会少于1000条。

查询是:

SELECT `PsMasterSubject`.`id`, `PsMasterSubject`.`name`, `PsProgram`.`name`, `PsStreamLevel`.`id` 
FROM `misdb`.`ps_master_subjects` AS `PsMasterSubject` 
LEFT JOIN `misdb`.`ps_programs` AS `PsProgram` ON (`PsMasterSubject`.`ps_program_id` = `PsProgram`.`id`) 
LEFT JOIN `misdb`.`ps_stream_levels` AS `PsStreamLevel` ON (`PsStreamLevel`.`id` AND `PsProgram`.`ps_stream_level_id`) 
LEFT JOIN `misdb`.`ps_program_levels` AS `PsProgramLevel` ON (`PsProgramLevel`.`id` AND `PsStreamLevel`.`ps_program_level_id`) 
WHERE 1 = 1 
ORDER BY `PsMasterSubject`.`id` DESC LIMIT 10;

我得到的问题与此类似,但我检查过我的桌子没有破损。

任何快速帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

哦,这是一个愚蠢的错误,来自我的开发人员端,30分钟后脑力激荡设计这个查询以不同的方式我得到这个问题,开发人员使用加入错误的方式,由于这个mysql无法正确加入表数据并消耗/ tmp目录中的所有空间并抛出此错误。正确的查询在这里 -

SELECT `PsMasterSubject`.`id`, `PsMasterSubject`.`name`, `PsProgram`.`name`, `PsStreamLevel`.`id` 
FROM `misdb`.`ps_master_subjects` AS `PsMasterSubject` 
LEFT JOIN `misdb`.`ps_programs` AS `PsProgram` ON (`PsMasterSubject`.`ps_program_id` = `PsProgram`.`id`) 
LEFT JOIN `misdb`.`ps_stream_levels` AS `PsStreamLevel` ON (`PsStreamLevel`.`id` = `PsProgram`.`ps_stream_level_id`) 
LEFT JOIN `misdb`.`ps_program_levels` AS `PsProgramLevel` ON (`PsProgramLevel`.`id` = `PsStreamLevel`.`ps_program_level_id`) 
WHERE 1 = 1 
ORDER BY `PsMasterSubject`.`id` DESC LIMIT 10;

现在问题是这是一个mysql错误,因为mysql应该抛出错误的语法错误但是这里mysql正在尝试为临时数据创建一个临时表。

如果有人能告诉我,我将非常感激。