当我在其中一个表上查询时,我的数据库出现问题我收到此错误消息
错误130(HY000):文件格式不正确
请问如何解决?
答案 0 :(得分:27)
类型
repair table 'table_name' use_frm
在SQL编辑器中执行它。这修复了索引。干得好......
答案 1 :(得分:8)
第一个链接的相关部分:
MySQL数据库允许您定义不同的MySQL存储引擎 对于不同的表。存储引擎是用于存储的引擎 并检索数据。最流行的存储引擎是MyISAM和InnoDB。
MyISAM表 - 最终会被破坏。这是生活中的事实。
幸运的是,在大多数情况下,MyISAM表损坏很容易修复。
要修复单个表,请连接到MySQL数据库并发出:
repair TABLENAME
要解决所有问题,请执行以下操作:
/usr/local/mysql/bin/mysqlcheck --all-databases -uUSERNAME -pPASSWORD -r
很多时候,MyISAM表会腐败,你甚至都不会知道 关于它,除非你查看日志文件。
我强烈建议您将此行添加到/etc/my.cnf配置文件中。它 一旦它们腐败就会自动修复MyISAM表:
[mysqld] myisam-recover=backup,force
答案 2 :(得分:0)
让我解释一下我尝试的细节。
执行mysqldump后,我得到了“不正确的文件格式”。它类似于我们在服务器启动/查询表时遇到的问题。
我转到mysql / data / yourdatabasename文件夹并检查了表格。 (对于MYISAM类型的表,我们有.frm,.MYI,.MYD。)我发现该表只有tablename.frm。所以我只是因为缺少.MYI和.MYD文件而单独移动了frm部分,因为它不再需要了。对于一些遇到错误文件格式问题的表,我也做了同样的事情。
就我而言,我删除的表不是MYI / MYD,有些表没有数据。在进行任何此类操作之前,请确保这两种情况。如果您使用数据可用表,则最终会删除要删除的表的数据丢失。