我在使用 InnoDB(表最初是 MyISAM,但不久前将其转换为 InndoB)表时遇到问题;我正在尝试运行此查询:
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
我无法对涉及的表进行修复;但是我对两张桌子都进行了检查,它们看起来都很好。我还对两个表进行了 OPTIMIZE 并且还通过执行以下操作重建了表..
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 ......这暂时有效,它恢复正常......然后它又坏了......修复它再次,再次打破....现在修复似乎根本不起作用。
现在,我知道,我知道......我已经在谷歌上搜索过这个问题......我注意到问题的大部分时间是我们在 MySQL 临时目录中没有足够的空间。 ...但是我已经让主机将临时目录更改为具有更多空间的东西并且问题仍然存在。
我认为应该归咎于主机,但它仍然是临时目录的问题;为什么?因为在我让它再次工作后,我开始再次将数据添加到 rss_posts 表中,因此 JOIN 会变得更大,而 MySQL 会再次耗尽空间......你觉得呢?