在用mac爬数据的时候电脑卡了,于是强制关闭计算机,重新再跑爬虫的时候,出现了 Table 'AAA' is marked as crashed and should be repaired 的提示,AAA是我操作的表,
此时这个表是可以进行一些简单的操作的,比如说 select * from AAA limit 1,或者select count(*) from AAA,,但是多加一些条件就不行了,还是提示 AAA crashed 了。
查询了网上的解决方案,说是用myisamchk工具语句(命令?)来解决,试了好多次都不行,以下是错误示范:
01. 在 mysql -u -p登陆数据库以后直接输入 myisamchk--不行,换到AAA所在的数据库里面执行 myisamchk --不行
02.打开到进入到 usr/mysql/bin/myisamchk 然后执行myisamchk 还是不行
03.进入到 usr/mysql/data/XXX ,其中XXX是表AAA所在的database,然后执行myisamchk,of course 还是不行
04.切换到root权限(sudo -i命令)重来上面各个步骤,都不行
05.不行不行都不行。。。。。。。,不知道为什么myisamchk怎么用(难道必须是windows?)
#### 正确示范在这里 ######
后来查到mysql有 check 和repair 两种命令可以用来查询和修复上述问题,步骤如下:
01.登陆到mysql的那个datababse 里,比如我登陆到我的XXX 数据库 mysql -u -p XXX,然后输入密码
02.接着,使用check语句查询那张有问题的AAA表,check table AAA,出现如下:
+--------------+-------+----------+-----------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+--------------+-------+----------+-----------------------------------------------------------+
| XXX.AAA | check | error | Size of datafile is: 54582012 Should be: 54900032 |
| XXX.AAA | check | error | Corrupt |
+--------------+-------+----------+-----------------------------------------------------------+
而用同样的语句查看另外一张没有问题的BBB表是这样的:
+---------------+-------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+---------------+-------+----------+----------+
| XXX.BBB | check | status | OK |
+---------------+-------+----------+----------+
所以AAA确实有问题,此时要用 repair 命令来解决:
repari table AAA,然后一会儿就修复完毕,再次用check table AAA的时候可以看到 status ok 的状态,然后AAA就修复了