我在 Azure 上有一台带有 MySQL 数据库的服务器,我们在那里有两个应用程序,有时我们会在代码中遇到此错误:
Warning: mysqli::query(): (HY000/1194): Table 'noticia' is marked as crashed and should be repaired in D:\home\site\wwwroot\classes\ConnectionFactory.php on line 122
一些问题:
- 什么样的事情会导致这个错误?
- 我在哪里可以找到日志以获得错误原因?
- 这可能是 PHP 问题吗?
这太奇怪了,因为多年来我一直在使用同一个 ConnectionFactory 类连接到数据库,这是我们第一次遇到这个错误。
我假设这是一个 MyISAM 表。这些不是碰撞安全的。另一方面,InnoDB 表是。
可能有多种原因,例如:
另请参阅:为什么 MySQL 表会崩溃?我该如何预防?
MySQL 错误日志默认位于
datadir
. 默认情况下,文件名是主机名,后缀为“.err”。您可以通过发出如下命令来修复表:
mysql
或者,从命令 shell,您可以运行类似这样的命令来检查和修复所有表: