断电,导致innodb部分表坏了,phpmyadmin中看到该表显示为使用中,并报了,#145 - Table './shbc/user_order_logs' is marked as crashed and should be repaired。
以前也解决过一次myisam表损坏,请参考:Incorrect key file for table mysql表损坏的修复方法
解决办法如下:
mysql> select * from user_order_logs;
ERROR 145 (HY000): Table './shbc/user_order_logs' is marked as crashed and should be repaired
mysql> check table user_order_logs;
+----------------------+-------+----------+---------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+----------------------+-------+----------+---------------------------------------------------------+
| shbc.user_order_logs | check | warning | Table is marked as crashed |
| shbc.user_order_logs | check | error | Size of datafile is: 1368064 Should be: 1368188 |
| shbc.user_order_logs | check | error | Corrupt |
+----------------------+-------+----------+---------------------------------------------------------+
3 rows in set (0.01 sec)
mysql> repair table user_order_logs;
+----------------------+--------+----------+------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+----------------------+--------+----------+------------------------------------------------------+
| shbc.user_order_logs | repair | info | Found block that points outside data file at 1368024 |
| shbc.user_order_logs | repair | status | OK |
+----------------------+--------+----------+------------------------------------------------------+
2 rows in set (0.17 sec)
当然如果不知道使用命令可以安装一个phpmyadmin 然后进行修复
我们在phpmyadmin中,勾选要进行优化操作的数据库表,在复选框中选择:修复表,就完成了数据表的优化。如下图在窗口最下方即列表下方,有一个下拉式菜单,在其中选择Repair Table(修复表)