gpt4 book ai didi

mysql - MySQL 的 key 文件不正确

转载 作者:可可西里 更新时间:2023-11-01 06:44:17 27 4
gpt4 key购买 nike

我在使用 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

我无法对涉及的表进行修复;但是我已经对两个表进行了检查,它们看起来都很好。我还对两个表进行了优化,还通过执行以下操作重建了表。

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 会再次耗尽空间....你怎么看?

最佳答案

这里发生的事情是 MySQL 通过从两个表的连接构建一个临时表来执行 ORDER BY。临时表太大,无法放入内存,因此 MySQL 创建了一个临时文件。

有几件事会阻止它正常工作。原始磁盘空间是一个。 ulimit 是另一个。如果这是托管的,他们可能对您的磁盘使用有配额(除了 ulimit 之外)。

我建议在您的查询中添加一个限制子句。当前,您将整个 rss_posts 和 rss_feeds 加载到临时表中进行排序。如果您只想要最近的 10 个数据,那么数据比您真正需要的要多得多。

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
AND posts.post_data_db > (now - interval 30 day);
ORDER BY posts.post_date_db DESC LIMIT 10;

关于mysql - MySQL 的 key 文件不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3908228/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com