我不经常来这里寻求帮助,但我对此感到非常沮丧,我希望有人以前遇到过这种情况。
每当我尝试使用多个join从表中获取记录时,我都会得到这个错误:
#126 - Incorrect key file for table '/tmp/#sql_64d_0.MYI'; try to repair it
因此,此查询将产生以下错误:
SELECT * FROM `core_username`
INNER JOIN `core_person` ON (`core_username`.`person_id` = `core_person`.`id`)
INNER JOIN `core_site` ON (`core_username`.`site_id` = `core_site`.`id`)
ORDER BY `core_username`.`name` ASC LIMIT 1
但这一条不会:
SELECT * FROM `core_username`
INNER JOIN `core_person` ON (`core_username`.`person_id` = `core_person`.`id`)
ORDER BY `core_username`.`name` ASC LIMIT 1
这个也不会:
SELECT * FROM `core_username`
INNER JOIN `core_site` ON (`core_username`.`site_id` = `core_site`.`id`)
ORDER BY `core_username`.`name` ASC LIMIT 1
这可能是什么原因造成的?我真的不知道如何去修复临时工作台,但我真的不认为这是问题所在,因为它每次都是新的临时工作台。username表相当大(目前有233,718条记录),但我怀疑这与它有什么关系。
任何帮助都将不胜感激。
UPDATE:经过进一步的测试,似乎只有在我尝试对结果进行排序时才会出现错误。也就是说,这个查询将给出我所期望的:
SELECT * FROM `core_username`
INNER JOIN `core_person` ON (`core_username`.`person_id` = `core_person`.`id`)
INNER JOIN `core_site` ON (`core_username`.`site_id` = `core_site`.`id`)
LIMIT 1
但是如果我加上:
ORDER BY `core_username`.`name` ASC
该错误将被触发。这只发生在我当前使用的特定the服务器上。如果我下载数据库并在我的本地主机和其他服务器上尝试同样的操作,它运行得很好。MySQL版本为5.0.77。
知道了这一点,我相当确信正在发生的事情是,正在创建的临时表太大了,并且MySQL阻塞了as described in this blog post。然而,我仍然不确定解决方案是什么。
https://stackoverflow.com/questions/2090073
复制相似问题