Php 如何在表崩溃时自动修复

Php 如何在表崩溃时自动修复,php,mysql,error-handling,Php,Mysql,Error Handling,有时,如果一个表被标记为崩溃,一个简单的 REPAIR TABLE `tablename` 可以继续工作 如何在PHP脚本中添加自动修复 我得到一个错误: 1194 - Table 'whos_online' is marked as crashed and should be repaired 这不太可能有意义 如果您需要频繁地修复表,以至于需要将其自动化,则说明您的设置有问题。在这种情况下,您需要修复根本原因 自动化解决方案也很难实现。您必须解析mySQL错误消息,以确定查询失败的原因是

有时,如果一个表被标记为崩溃,一个简单的

REPAIR TABLE `tablename`
可以继续工作

如何在PHP脚本中添加自动修复

我得到一个错误:

1194 - Table 'whos_online' is marked as crashed and should be repaired

这不太可能有意义

如果您需要频繁地修复表,以至于需要将其自动化,则说明您的设置有问题。在这种情况下,您需要修复根本原因

自动化解决方案也很难实现。您必须解析mySQL错误消息,以确定查询失败的原因是否与损坏的表有关。查询失败的原因有数千种


通常的方法是监视网站上发生的事情,并让管理员对问题做出反应。例如,当查询失败时,您可以让您的web应用程序向您发送电子邮件。

首先弄清为什么会发生这种情况,并加以修复,这样做会更好吗?当然会很有趣,因为这种情况每年只发生一次。发生时您的磁盘空间是否不足?否,有6GB的freeCheck MySQL来寻找线索。查询失败的原因怎么可能有上千种不同的原因。如果我刚刚将表标记为崩溃?如果我的“standarn debian”设置有问题,它将是相互测试的,但我怎么能发现呢?(每年只发生一次)@rubo足够公平-在这种情况下,您必须检查错误消息,查看它是否包含“已标记崩溃”,并运行
修复
,如果您的PHP脚本的mySQL用户被允许这样做的话。尽管如此,如果这种情况经常发生,以至于您觉得有必要将其自动化,那么您的服务器上就有问题了。(编辑:啊,你提到这种情况并不经常发生)所以如果出现错误,mysql没有自动尝试修复的选项?我的意思是:这很愚蠢——mysql精确地解释了该做什么,但是Doessent当时就做了itself@rubo它可能不会自动这样做,让管理员有机会看到可能有什么问题。崩溃总是有一些可能需要修复的原因。运行
mysqlcheck
的cron作业可以做你想做的事情-我找不到任何关于告诉mySQL立即自动进行修复的信息。