MySQL的.eer错误日志中报了个错误,如下:
InnoDB: error in sec index entry update in
InnoDB: index `***idx` of table `***db`.`***tbl`
InnoDB: tuple DATA TUPLE: 2 fields;
0: SQL NULL;
1: len 4; hex 003a4b99; asc :K ;;
InnoDB: record PHYSICAL RECORD: n_fields 2; compact format; info bits 0
0: SQL NULL;
1: len 4; hex 003a4174; asc :At;;
TRANSACTION 5B0D26, ACTIVE 0 sec, process no 13587, OS thread id 1239374144 updating or deleting
mysql tables in use 1, locked 1
6 lock struct(s), heap size 1216, 3 row lock(s), undo log entries 3
MySQL thread id 9487, query id 43404284 192.168.1.1 ***user Updating
update ***tbl set ***column1=*** where ***column2=***
InnoDB: Submit a detailed bug report to http://bugs.mysql.com
对提示的***tbl表进行了检查:
mysql>check table ***tbl;
+-------------------------+-------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+-------------------------+-------+----------+----------+
| ***db.***tbl | check | error | Corrupt |
+-------------------------+-------+----------+----------+
发现原来是表损坏了,很奇怪,表才建了不久,就出现了损坏,而且之前进行过一次optimize对表优化,难道是这个引起的,原因实在是搞不明白了,只能重建表解决该问题:
alter table ***tbl engine=innodb;
注意啊,大表重建可能需要较长时间和双倍的空间。
参考: