MySQL错误修复记录:Table xx is marked as crashed and should be repaired

昨晚入睡后,收到松哥的 QQ 消息,说松松商城打开报错,于是手机 QQ 上打开了首页地址,发现有如下报错:

MySQL server error report:Array ( [0] => Array ( [message] => MySQL Query Error ) [1] => Array ( [sql] => SELECT u.user_name, og.goods_number, oi.add_time, IF(oi.order_status IN (2, 3, 4), 0, 1) AS order_status FROM `hide_songsong`.`ecs_order_info` AS oi LEFT JOIN `hide_songsong`.`ecs_users` AS u ON oi.user_id = u.user_id, `hide_songsong`.`ecs_order_goods` AS og WHERE oi.order_id = og.order_id AND og.goods_id = 213 ORDER BY oi.add_time DESC LIMIT 50 ) [2] => Array ( [error] => Table 'ecs_users' is marked as crashed and should be repaired ) [3] => Array ( [errno] => 1194 ) )

关键报错信息:

Table 'ecs_users' is marked as crashed and should be repaired

提示这张表损坏了,必须修复,登陆服务器之后,开始修复,以下记录备忘。

1、尝试使用 myisamchk 命令对所有表索引文件进行修复:

myisamchk --safe-recover /path/to/*.MYI

- recovering (with sort) MyISAM-table 'ecs_users.MYI'
Data records: 2593
- Fixing index 1
- Fixing index 2
- Fixing index 3
- Fixing index 4
- Fixing index 5
*******

2、刷新首页依然报错,于是登陆 MySQL,执行 REPAIR TABLE ecs_users;

mysql> REPAIR TABLE ecs_users;
+-------------------------+--------+----------+-------------------------------------------------------------------------------------------------------------+
| Table                   | Op     | Msg_type | Msg_text                                                                                                    |
+-------------------------+--------+----------+-------------------------------------------------------------------------------------------------------------+
| hide_songsong.ecs_users | repair | error    | 1 when fixing table                                                                                         |
| hide_songsong.ecs_users | repair | Error    | Can't change ownership of the file '/HIDE_songsong/ecs_users.MYD' (Errcode: 1) |
| hide_songsong.ecs_users | repair | status   | Operation failed                                                                                            |
+-------------------------+--------+----------+-------------------------------------------------------------------------------------------------------------+
3 rows in set (0.02 sec)

3、提示无法修改拥有着属性,应该是上一步使用 myisamchk 命令时文件所属变成了 root 了,于是用 chown 更该拥有者:

chown -R mysql:mysql /HIDE_songsong/*

4、然后继续登陆 MySQL 执行 REPAIR TABLE ecs_users;  成功:

mysql> use hide_songsong;
Database changed
mysql> REPAIR TABLE ecs_users;
+-------------------------+--------+----------+----------+
| Table                   | Op     | Msg_type | Msg_text |
+-------------------------+--------+----------+----------+
| hide_songsong.ecs_users | repair | status   | OK       |
+-------------------------+--------+----------+----------+
1 row in set (0.02 sec)

mysql>

在刷新网站,已经正常:

事后总结:一般这个报错都是因为数据库表索引文件损坏导致的,发现这类错误可以尝试使用 phpMyAdmin 的 Repair 自动修复功能。如果不行,先将数据库文件做好备份,然后按照本文的步骤尝试修复吧。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

insert中启用错误日志的问题及分析(r2第10天)

在平时的工作中,有时候需要insert一批数据,这些数据可能是临时表,外部表,普通表,子查询等形式,类似下面的格式 insert into xxxx (sele...

3219
来自专栏杨建荣的学习笔记

使用awk来解析dump文件 (73天)

dump文件是平时工作中经常碰见的,有时候得到一个dump,但是没有提供一些更多的信息,导入的时候就很可能会有问题。 如果某个用户默认表空间是user,但是du...

4248
来自专栏乐沙弥的世界

PL/SQL -->隐式游标(SQL%FOUND)

在PL/SQL中,游标的使用分为两种,一种是显示游标,一种是隐式游标,显示游标的使用需要事先使用declare来进行声明,其过程包括

933
来自专栏乐沙弥的世界

使用datapump 导出导入同义词(export and import synonym using datapump)

      对于同义词的备份我们有多种方式来实现,如直接通过脚本生成同义词的创建脚本,或者使用dbms_metadata.get_ddl来提取同义词的定义脚本。...

1123
来自专栏乐沙弥的世界

使用带dblink方式的datapump迁移Oracle 10g到11g

      对于从Oracle 10g下迁移数据库到Oracle 11g,除了使用RMAN方式之外,我们可以使用带dblink的datapump方式来实现基于逻...

681
来自专栏乐沙弥的世界

Oracle 角色、配置文件

增加或删除角色中的某一权限,被授予该角色的所有用户或角色自动地获得新增权限或删除旧的权限

942
来自专栏安恒网络空间安全讲武堂

Sqli_labs65关通关详解(上)

Less-1 这个题目是基于错误,单引号,字符型注入, http://127.0.0.1/sqli/Less-1/?id=1' //报错 http://...

6696
来自专栏乐沙弥的世界

数据导入时遭遇 ORA-01187 ORA-01110

最近的数据导入(IMP)时碰到了ORA-01187 ORA-01110 错误,由于这个数据库是使用热备恢复过来的,且恢复也是成功的,因为数据库能够成功open,...

853
来自专栏杨建荣的学习笔记

关于oracle invalid components问题的解决(28天)

升级生产的DB,有一些预检查条件,这些需要提前修复,以便在升级的时候不会成为影响进度的绊脚石。 生产中的components有一些显示是invalid状态,从d...

3784
来自专栏乐沙弥的世界

Oracle 控制文件(CONTROLFILE)

为二进制文件,初始化大小由CREATE DATABASE指定,可以使用RMAN备份

1162

扫码关注云+社区

领取腾讯云代金券