MySQL表被标记为崩溃,最后(自动?)修复失败

时间:2012-01-12 23:16:51

标签: mysql repair

我正在修理这张桌子突然服务器被绞死,当我回来时所有的桌子都没问题,但是这个显示'正在使用',当我尝试修复它时不会继续。

  

ERROR 144 - 表'./extas_d47727 / xzclf_ads'被标记为崩溃,最后(自动?)修复失败

我该怎么做才能修复它?

10 个答案:

答案 0 :(得分:228)

如果您的MySQL进程正在运行,请将其停止。关于Debian:

sudo service mysql stop

转到您的数据文件夹。关于Debian:

cd /var/lib/mysql/$DATABASE_NAME

尝试跑步:

myisamchk -r $TABLE_NAME

如果这不起作用,您可以尝试:

myisamchk -r -v -f $TABLE_NAME

您可以再次启动MySQL服务器。关于Debian:

sudo service mysql start

答案 1 :(得分:98)

尝试运行以下查询:

repair table <table_name>;

我有同样的问题,它解决了我的问题。

答案 2 :(得分:12)

如果在移动到/ var / lib / mysql时它允许您拒绝权限,请使用以下解决方案

$ cd /var/lib/
$ sudo -u mysql myisamchk -r -v -f mysql/<DB_NAME>/<TABLE_NAME>

答案 3 :(得分:6)

这是我解决这个问题的经验。我正在使用 XAMPP。 我收到以下错误

 Fatal error: Can't open and lock privilege tables: Table '.\mysql\db' is marked as crashed and last (automatic?) repair failed  

这是我一步一步解决它的方法:

  1. 转到位置 C:\xampp\mysql,对于您来说,位置可能不同,请确保您位于正确的文件位置。
  2. 已将数据文件夹的备份创建为旧数据。
  3. 从 C:\xampp\mysql\backup 复制文件夹“mysql”
  4. 将其粘贴到 C:\xampp\mysql\data\ 中以替换旧的 mysql 文件夹。

它奏效了。请记住,我已经尝试了大约 10 种解决方案,但它们对我不起作用。此解决方案可能适合您,也可能不适合您,但无论如何,请在执行任何操作之前备份您的数据文件夹。

注意:我总是选择使用修复命令来解决这个问题,但就我而言,我根本无法启动 mysql,也无法让 myisamchk 命令工作。

无论您做什么,都要定期备份您的数据库。

答案 4 :(得分:3)

我的错误是myisamchk: error: myisam_sort_buffer_size is too small

解决方案

myisamchk -r -v mysql/<DB_NAME>/<TABLE_NAME> --sort_buffer_size=2G

答案 5 :(得分:3)

我需要将USE_FRM添加到修复语句中以使其正常工作。

REPAIR TABLE <table_name> USE_FRM;

答案 6 :(得分:2)

转到data_dir并修复Your_table.TMP表后删除<Your_table>文件。

答案 7 :(得分:1)

这是100%的解决方案。我自己尝试过。

myisamchk -r -v -f --sort_buffer_size = 128M --key_buffer_size = 128M / var / lib / mysql / databasename / tabloname

答案 8 :(得分:1)

如果您的 XAMPP 安装发生这种情况,只需将 global_priv.MADglobal_priv.MAI 文件从 ./xampp/mysql/backup/mysql/ 复制到 ./xampp/mysql/data/mysql/

答案 9 :(得分:0)

我尝试了现有答案中的选项,主要是标记为正确的选项,在我的方案中不起作用。但是,所做的工作是使用phpMyAdmin。选择数据库,然后选择表,从底部的下拉菜单中选择“修复表”。

  • 服务器类型:MySQL
  • 服务器版本:5.7.23-MySQL社区服务器(GPL)
  • phpMyAdmin:版本信息:4.7.7