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

Cry*_*imp 118 mysql repair

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

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

我该怎么做才能修复它?

Ale*_*tic 241

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

sudo service mysql stop
Run Code Online (Sandbox Code Playgroud)

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

cd /var/lib/mysql/$DATABASE_NAME
Run Code Online (Sandbox Code Playgroud)

试试跑步:

myisamchk -r $TABLE_NAME
Run Code Online (Sandbox Code Playgroud)

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

myisamchk -r -v -f $TABLE_NAME
Run Code Online (Sandbox Code Playgroud)

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

sudo service mysql start
Run Code Online (Sandbox Code Playgroud)

  • 我必须导航到`/ var/lib/mysql/<database>`并运行`myisamchk -r -v -f ./ <table name>`. (13认同)
  • 我有一个'myisam_sort_buffer_size太小'的错误,所以这个命令对我有用:`myisamchk -r -v --sort_buffer_size = 2G <table_name>` (4认同)
  • 我试过上面的命令我得到这个错误无法创建新的tempfile:'xzclf_ads.TMD' (3认同)
  • 嗯,磁盘真的满了吗?你能尝试运行"df -h"吗?最有可能的是,你应该释放一些空间......在表修复期间,它使用一些磁盘空间写入临时表.正如您从错误消息中看到的那样,它会写入/ tmp /文件夹 (2认同)

cRE*_*ker 100

尝试运行以下查询:

repair table <table_name>;
Run Code Online (Sandbox Code Playgroud)

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


cra*_*crv 12

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

$ cd /var/lib/
$ sudo -u mysql myisamchk -r -v -f mysql/<DB_NAME>/<TABLE_NAME>
Run Code Online (Sandbox Code Playgroud)


小智 6

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

REPAIR TABLE <table_name> USE_FRM;
Run Code Online (Sandbox Code Playgroud)


ash*_*ish 6

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

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

这就是我为解决它所做的,一步一步:

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

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

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

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

  • 一个小评论,采取这个对我也有效的解决方案可能需要你重新定义 MySQL 密码。从 XAMPP UI 打开“shell”并使用命令 # mysqladmin -u root 密码 键入您之前使用的密码并确认密码。又不行了。 (5认同)