我遇到了一个 InnoDB 表的问题(表最初是 MyISAM,但不久前也将其转换为 InnodB);我正在尝试运行此查询:
SELECT
posts.id,
posts.post_title
FROM
rss_posts AS posts
INNER JOIN rss_feeds AS feeds ON posts.blog_id=feeds.id
WHERE
feeds.blog_language=1
ORDER BY
posts.post_date_db DESC
LIMIT
10;
我收到此错误:
Query : SELECT posts.id,posts.post_title FROM rss_posts AS posts INNER JOIN vw_rss_feeds AS feeds ON posts.blog_id=feeds.id WHER...
Error Code : 126
Incorrect key file for table '/tmp/#sql_7375_0.MYI'; try to repair it
我无法对涉及的表进行修复;不过我对两张桌子都进行了检查,它们看起来都很好。我还对两个表进行了优化,并且还通过执行以下操作重建了表。
INSERT INTO new_table SELECT * FROM old_table;
然后我将新表重命名为旧表名......但我仍然遇到这个问题。
为了尝试找出导致该问题的表,我删除了引用“rss_feeds”表的查询中的代码....所以现在查询看起来像这样..
SELECT
posts.id,
posts.post_title
FROM
rss_posts AS posts
ORDER BY
posts.post_date_db DESC
LIMIT
10;
那行得通。
所以问题出在 rss_feeds 表上。
所以然后我想我会将表转换回 MyISAM 并运行修复然后转换回 InnoDB...这暂时有效,它恢复正常...然后它再次损坏...修复了又坏了……现在修复似乎根本不起作用。
现在,我知道了,我知道了......我已经在Google上搜索过这个问题......我注意到大多数时候问题是MySQL临时目录中没有足够的空间。 ...但我已经让主机将临时目录更改为具有更多空间的目录,问题仍然存在。
我认为主机应该受到责备&它仍然是临时目录的问题;为什么?因为在我让它再次工作后,我开始再次向 rss_posts 表添加数据,因此 JOIN 会变得更大,MySQL 会再次耗尽空间......你觉得呢?