一些MySQL用户报告说,当MySQL服务器因停电或其他原因崩溃后重新启动时,收到“文件错误中的错误信息”。但是,该错误也可能是由于配置文件“my.cnf”的问题而发生的。完整的错误信息显示如下:
错误1033 (HY000):文件:'.*.frm'中的信息不正确
修复MySQL '不正确的信息在文件'错误的方法
以下是修复损坏的表和修复“不正确的信息在文件”MySQL错误的五种方法。
注意:如果损坏表的存储引擎是MyISAM,请使用方法1和方法2修复表。如果表使用的是InnoDB存储引擎,请跳转到方法4。
方法1—使用use_frm命令执行REPAIR命令
要修复损坏的MyISAM表,请运行以下命令:
修复表1 use_frm; |
这里,tbl1是需要修复的表的名称。将其替换为要修复的表的名称。
方法2 -删除并重新创建损坏表
要做到这一点,请遵循以下步骤:
- 停止MySQL服务器实例
- 备份tbl1。FRM(表结构),tbl1。MYD(表数据)和tbl1。索引文件。
- 删除表tbl1
- 启动MySQL服务器
- 使用CREATE TABLE语句重新创建表(在本例中为tbl1)
- 再次停止服务器
- 复制MYD和tbl1。MYI数据库目录(datadir)中的文件
- 重新启动MySQL实例
如果这不能帮助解决问题,或者表中有很多丢失的数据,请跳到以下方法。
方法3 -从备份恢复
如果上述修复方法对您不起作用,请从最近的备份恢复MySQL数据库。当涉及到从InnoDB存储引擎上运行的损坏表中恢复数据时,恢复备份是唯一的选择。
如果你没有备份,请使用专业人员MySQL修复工具也许会有帮助。
方法4—修改配置文件
有时,MySQL服务器可能以错误的配置文件(Windows为my.ini, Linux为my.cnf)启动,导致错误1033。当脚本(在下载数据文件时自动适应my.cnf文件中的更改)启动失败时,就会出现这种情况。InnoDB ibdata1文件的大小可能与下载的文件不匹配。
例如,my.cnf文件包含大小为2GB的ibdata1文件,但第二个数据文件的大小为4GB。
innodb_data_file_path = ibdata1:4GB; ibdata2:50M: autoextend
要解决此问题,请关闭服务器并将配置文件中的上述行修改为:
innodb_data_file_path = ibdata1:4GB; ibdata2:50M: autoextend
保存my.cnf文件,表将恢复到工作状态。
方法5 -使用MySQL修复工具
恒星修复MySQL软件的目的是帮助MySQL用户修复损坏的表为MyISAM和InnoDB存储引擎。您可以下载该软件的演示版本,验证可恢复的数据是否正确。

该软件支持在Windows和Linux系统上修复MySQL 8.0.26及之前版本的数据库表。它恢复原始的表属性、主键、视图、触发器等。
使用恒星修复MySQL数据库表的步骤
- 下载并安装软件后,启动它。
- 阅读说明并单击OK继续。
- 浏览并选择包含要修复的数据库的MySQL数据文件夹,然后单击OK。
- 选择具有损坏表的数据库,然后单击“修复”。
- 当出现“修复完成”消息框时单击“确定”。
- 显示所有修复表及其可恢复数据的预览。
- 选择要恢复的全部或特定项目,然后单击“文件”菜单上的“保存”。
- 选择将修复后的数据库保存到新的MySQL数据库或其他文件格式,如CSV、HTML或XLS。按Save按钮。
- 选择保存数据库的位置,然后再次单击save。
修复后的数据库和所有恢复的表将保存在选定的位置。
常见问题
Q.正如上面的方法4所建议的,我将my.cnf中的行修改为80MB,以帮助恢复InnoDB表。你能建议我怎样才能使ibdata1的大小恢复到100MB的实际大小吗?
A.将第一个数据文件标记为自动扩展,以返回文件的实际大小100MB。