昨晚入睡后,收到松哥的 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 自动修复功能。如果不行,先将数据库文件做好备份,然后按照本文的步骤尝试修复吧。
学习中,欢迎互踩
博主不错哦,现在都已经给松松博客提供技术支持了,赞!
张哥,表损坏是什么情况?我还没遇到过这种问题,你这个解决方法挺不错的。
前人是这样说的:
学习了,受益匪浅,备用!
感谢分享,标记一个留着,以后万一用得着。
换上我的话,只能自动修复了。
学习中,这个情况看了博主的文章才意识到有可能会发生,记下了,谢谢博主分享经验
腾讯云的学生VPS怎么样?能应付500+IP的站点不
绝逼够了
那我去搞一台玩玩,最烦备案啊!!!
备案是很蛋疼,我也不喜欢
反正是看不懂的。
学习了,专业的文章
为什么会损坏呢?
博主用的是云主机吗?云主机貌似很贵,要好几百一个月吧。。。。
我一直用着虚拟主机,今天空间商居然把我网站关了,跟我说我的网站消耗CPU资源太多,要我升级云主机,一看价格。。吓死我了,幸亏我找他们说了一通,给我打开了,但是我目前为止还是找不到原因,心里好忐忑啊。
50左右一个月,不用好几百的。
博主很厉害,学习了.
好看的主题。。good
发现phpmyadmin用来管理mysql其实挺好,尤其是状态页的各种建议,对照调优很有帮助。
另外博客前几天是不是挂了,打不开。
可能折腾挂了。。。
Jager是技术牛,非常专业
为什么我看到大家的评论都是空白呢?
╮(╯▽╰)╭ 记录而已。。
折腾主题中,已解决。
蛋疼啊,我的Firefox 28还是不能正常打开贵站,提示“https已经下线...”
关键是我输入“zhang.ge”、或“https://zhang.ge”都会自动跳到“https://zhang.ge”
难道是因为我的火狐存了很多你网站的https地址的书签?
需要清理浏览器历史缓存,因为浏览器缓存了301
学习了!给力。
博主不错,很好的一个博客。
昨天他的 网站就打不开啊! 百度加速 一直提示 520? 还是522来着???
又涨知识了,感谢博客的分享~原来报错的原因还可能是这样啊。。。。。
感谢分享,学习中!
学习中,赞一个!