首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >进行多个连接时,MySQL临时表的密钥文件不正确

进行多个连接时,MySQL临时表的密钥文件不正确
EN

Stack Overflow用户
提问于 2010-01-19 07:55:02
回答 11查看 100.3K关注 0票数 60

我不经常来这里寻求帮助,但我对此感到非常沮丧,我希望有人以前遇到过这种情况。

每当我尝试使用多个join从表中获取记录时,我都会得到这个错误:

代码语言:javascript
复制
#126 - Incorrect key file for table '/tmp/#sql_64d_0.MYI'; try to repair it

因此,此查询将产生以下错误:

代码语言:javascript
复制
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

但这一条不会:

代码语言:javascript
复制
SELECT * FROM `core_username`
INNER JOIN `core_person` ON (`core_username`.`person_id` = `core_person`.`id`)
ORDER BY `core_username`.`name` ASC LIMIT 1

这个也不会:

代码语言:javascript
复制
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:经过进一步的测试,似乎只有在我尝试对结果进行排序时才会出现错误。也就是说,这个查询将给出我所期望的:

代码语言:javascript
复制
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

但是如果我加上:

代码语言:javascript
复制
ORDER BY `core_username`.`name` ASC

该错误将被触发。这只发生在我当前使用的特定the服务器上。如果我下载数据库并在我的本地主机和其他服务器上尝试同样的操作,它运行得很好。MySQL版本为5.0.77。

知道了这一点,我相当确信正在发生的事情是,正在创建的临时表太大了,并且MySQL阻塞了as described in this blog post。然而,我仍然不确定解决方案是什么。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2090073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档