我从我们的开发人员那里收到一个查询,该查询未在服务器上执行并给出以下错误 -
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;
我遇到了一些与此相同的问题,但我检查过我的桌子没有损坏。
任何快速帮助将不胜感激。
哦,妈的,这是我的开发人员犯的一个愚蠢的错误,经过 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 正在尝试为临时数据创建一个临时表。
如果有人能向我澄清这一点,我将非常感激。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)