原因是mysql的dspam数据库中的dspam_token_data表有错误,需要使用myisamchk进行修复:
# cd /var/lib/mysql/dspam
# myisamchk dspam_token_data.MYI //检查dspam_token_data表
# myisamchk -r dspam_token_data.MYI //修复dspam_token_data表(-r)可以解决几乎所有问题
注:修复表的选项开关有很多 (-o)安全方式(-f)强制方式(-q)快速方式(错误严重时不能用)
实际操作时用了多种选项开关或组合,最后修复成功的记录显示如下:
[root@mail dspam]# myisamchk -f dspam_token_data.MYI
Checking MyISAM file: dspam_token_data.MYI
Data records: 14326778 Deleted blocks: 907003
myisamchk: warning: Table is marked as crashed and last repair failed
- check file-size
myisamchk: warning: Size of indexfile is: 300661760 Should be: 108279808
- check record delete-chain
myisamchk: warning: Found 0 deleted space in delete link chain. Should be19954066
myisamchk: error: Found 0 deleted rows in delete link chain. Should be 907003
myisamchk: error: record delete-link-chain corrupted
- recovering (with sort) MyISAM-table 'dspam_token_data.MYI'
Data records: 14326778
- Fixing index 1
myisamchk: warning: Duplicate key for record at 315149384 againstrecord at 959552
Data records: 14326777
myisamchk: warning: 1 records have been removed