Table './db_name/table_name' is marked as crashed and last (automatic?) repair failed
近日,有一台 Ubuntu 20.04 服务器异常断电,数据归档服务还在往数据表里进行写数据操作,造成有数据表损坏。
后面通电恢复,服务器开机且数据库服务启动后,发现有数据表无法读写,并报出“Table './db_name/table_name' is marked as crashed and last (automatic?) repair failed”错误。后面根据网络教程最终解决,现记录操作过程如下:
1. 关闭MySQL服务
systemctl stop mysql
2. 数据库表修复
切换到数据库datadir路径下。
cd /var/lib/mysql/db_name
修复损坏的数据库表。
myisamchk --safe-recover -r table_name.MYI
后面报出了错误“myisamchk: error: 140 when opening MyISAM-table 'table_name.MYI'”(有说是MySQL5.6后的BUG),后面删掉后缀后再试,修复成功。
myisamchk --safe-recover -r table_name
3. 启动MySQL服务
启动MySQL服务。
systemctl start mysql