/usr/libexec/mysqld:表./DBNAME/TABLE_NAME.MYI的错误密钥文件;尝试修复它的错误和解决方案

时间:2020-01-09 10:44:04  来源:igfitidea点击:

我在mysql.log文件中收到以下错误:

100630 2:03:39 [ERROR] /usr/libexec/mysqld: Incorrect key file for table ./app2_db/aix_data_user.MYI; try to repair it

密钥文件不正确;尝试修复它

如何解决此错误并在UNIX或者Linux操作系统下修复我的表?
有两种方法可以修复此错误并修复mysql表。

方法1:使用MySQL命令行

以root用户身份登录,输入(app2_db是数据库名称):

$ mysql -u root -p app2_db

要检查名为aix_data_user的表,请在以下mysql>提示符下执行:

mysql> check table aix_data_user;

输出示例:

+---------------------+-------+----------+----------------------------------------------------------+
| Table               | Op    | Msg_type | Msg_text                                                 |
+---------------------+-------+----------+----------------------------------------------------------+
| table aix_data_user | check | warning  | Table is marked as crashed                               | 
| table aix_data_user | check | warning  | 2 clients are using or haven't closed the table properly | 
| table aix_data_user | check | error    | record delete-link-chain corrupted                       | 
| table aix_data_user | check | error    | Corrupt                                                  | 
+---------------------+-------+----------+----------------------------------------------------------+
4 rows in set (0.00 sec)

警告!最好在执行表修复操作之前备份表;在某些情况下,该操作可能会导致数据丢失。
可能的原因包括但不限于文件系统错误。

执行以下sql命令以修复aix_data_user表,执行:

mysql> repair table aix_data_user;

输出示例:

+---------------------+--------+----------+----------+
| Table               | Op     | Msg_type | Msg_text |
+---------------------+--------+----------+----------+
| table aix_data_user | repair | status   | OK       | 
+---------------------+--------+----------+----------+
1 row in set (0.00 sec)

选项#2:使用mysqlcheck命令

mysqlcheck命令用于检查,修复,优化和分析mysql表。
通用语法如下:

mysqlcheck [options] db_name [tables]
mysqlcheck -u userName -p db_name table1

要检查aix_data_user表,请执行:

$ mysqlcheck -u root -p app2_db aix_data_user

输出示例:

Enter password:
aix_data_user                     OK

要修复该表,请将自动修复选项传递给mysqlcheck命令:

$ mysqlcheck --auto-repair -u root -p app2_db aix_data_user