ERROR 1033: Incorrect information in file: './qs_52_table/qs_member_table.frm' mysql数据库迁移

ERROR 1033: Incorrect information in file: './qs_52_table/qs_member_table.frm'

在mysql的一个版本到不一样的版本的时候出现了以上问题! 使用表修复都没得到解决!后来查找资料。好像是结构版本不兼容问题!

办法1:新建表(与原表一样)然后把数据导入!可以把原来备份的表清空插入新数据。

2:把原来备份的表中的.frm覆盖到新的数据库中。操作前请备份。

我的可以了,不知道是不是适合你的数据库。

下面是查找的部分资料:

13.4 使用myisamchk进行崩溃恢复 前进
 

--------------------------------------------------------------------------------
 
2004-02-12 MySQL 译者:晏子 http://www.mysql.com/doc.html
 
 
由MySQL用来存储数据的文件格式以已经被广泛地测试过,但是总是有外部情况可以导致数据库表

被破坏:

mysqld进程在一个写入当中被杀死。
计算机的意外关闭(例如,如果计算机掉电)。
一个硬件错误
这章描述如何检查和处理在MySQL数据库中的数据损坏。如果你的表损坏很多,你应该尝试找出其

原因!见G.1 调试一个MySQL服务器。

在执行崩溃恢复时,理解在一个数据库中的每一个表tbl_name对应的在数据库目录中的3个文件是

很重要的:

文件 用途
“tbl_name.frm” 表定义(表格)文件
“tbl_name.MYD” 数据文件
“tbl_name.MYI” 索引文件

这3个文件的每一个文件类型可能遭受不同形式的损坏,但是问题最常发生在数据文件和索引文件

myisamchk通过一行一行地创建一个“.MYD”(数据 )文件的副本来工作,它通过由删除老的

“.MYD 文件并且重命名新文件到原来的文件名结束修复阶段。如果你使用--quick,myisamchk不

创建一个临时“.MYD”文件,只是假定“.MYD”文件是正确的并且仅创建一个新的索引文件,不接

触“.MYD”文件,这是安全的,因为myisamchk自动检测“.MYD”文件是否损坏并且在这种情况下

,放弃修复。你也可以给myisamchk两个--quick选项。在这种情况下,myisamchk不会在一些错误

上(象重复键)放弃,相反试图通过修改“.MYD”文件解决它们。通常,只有在你在太少的空闲磁盘

空间上实施一个正常修复,使用两个--quick选项才有用。在这种情况下,你应该至少在运行

myisamchk前做一个备份。


13.4.1 怎样检查表的错误

为了检查一张表,使用下列命令:

myisamchk tbl_name
这能找出所有错误的99.99%。它不能找出的是仅仅涉及数据文件的损坏(这很不常见)。如果你想要

检查一张表,你通常应该没有选项地运行myisamchk或用-s或--silent选项的任何一个。
myisamchk -e tbl_name
它做一个完全彻底的数据检查(-e意思是“扩展检查”)。它对每一行做每个键的读检查以证实他们

确实指向正确的行。这在一个有很多键的大表上可能花很长时间。myisamchk通常将在它发现第一

个错误以后停止。如果你想要获得更多的信息,你能增加--verbose(-v)选项。这使得myisamchk继

续一直到最多20个错误。在一般使用中,一个简单的myisamchk(没有除表名以外的参数)就足够了


myisamchk -e -i tbl_name
象前面的命令一样,但是-i选项告诉myisamchk还打印出一些统计信息。

13.4.2 怎样修复表

一张损坏的表的症状通常是查询意外中断并且你能看到例如这些错误:

“tbl_name.frm”被锁定不能改变。
不能找到文件“tbl_name.MYI”(Errcode :### )。
从表处理器的得到错误###(此时,错误135是一个例外)。
意外的文件结束。
记录文件被毁坏。
在这些情况下,你必须修复表。myisamchk通常能检测并且修复出错的大部分东西。

修复过程包含最多4个阶段,在下面描述。在你开始前,你应该cd到数据库目录和检查表文件的权

限,确保他们可被运行mysqld的Unix用户读取(和你,因为你需要存取你正在检查的文件)。如果它

拒绝你修改文件,他们也必须是可被你写入的。

阶段1:检查你的表

运行myisamchk *.MYI或(myisamchk -e *.MYI,如果你有更多的时间)。使用-s(沉默)选项禁止不

必要的信息。

你必须只修复那些myisamchk报告有一个错误的表。对这样的表,继续到阶段2。

如果在检查时,你得到奇怪的错误(例如out of memory错误),或如果myisamchk崩溃,到阶段3。

舞台 2 :简单安全的修复

首先,试试myisamchk -r -q tbl_name(-r -q意味着“快速恢复模式”)。这将试图不接触数据文

件来修复索引文件。如果数据文件包含它应有的一切和在数据文件指向正确地点的删除连接,这应

该管用并且表可被修复。开始修理下一张表。否则,使用下列过程:

在继续前做数据文件的一个备份。
使用myisamchk -r tbl_name(-r意味着“恢复模式”)。这将从数据文件中删除不正确的记录和已

被删除的记录并重建索引文件。
如果前面的步骤失败,使用myisamchk --safe-recover tbl_name。安全恢复模式使用一个老的恢

复方法,处理常规恢复模式不行的少数情况(但是更慢)。
如果在修复时,你得到奇怪的错误(例如out of memory错误),或如果myisamchk崩溃,到阶段3。

舞台 3 :困难的修理

如果在索引文件的第一个16K块被破坏,或包含不正确的信息,或如果索引文件丢失,你只应该到

这个阶段 。在这种情况下,创建一个新的索引文件是必要的。按如下这样做:

把数据文件移更安全的地方。
使用表描述文件创建新的(空)数据和索引文件:
shell> mysql db_name
mysql> DELETE FROM tbl_name;
mysql> quit

将老的数据文件拷贝到新创建的数据文件之中。(不要只是将老文件移回新文件之中;你要保留一

个副本以防某些东西出错。)
回到阶段2。现在myisamchk -r -q应该工作了。(这不应该是一个无限循环)。

阶段4:非常困难的修复

只有描述文件也破坏了,你才应该到达这个阶段。这应该从未发生过,因为在表被创建以后,描述

文件就不再改变了。

从一个备份恢复描述文件并且回到阶段3。你也可以恢复索引文件并且回到阶段2。对后者,你应该

用myisamchk -r启动。
如果你没有一个备份但是确切地知道表是怎样被创建的,在另一个数据库中创建表的一个拷贝。删

除新的数据文件,然后从其他数据库将描述和索引文件移到破坏的数据库中。这给了你新的描述和

索引文件,但是让数据文件独自留下来了。回到阶段2并且尝试重建索引文件。

13.4.3 表优化

为了组合成碎片的记录并且消除由于删除或更新记录而浪费的空间, 以恢复模式运行myisamchk:

shell> myisamchk -r tbl_name

你可以用SQL的OPTIMIZE TABLE语句使用的相同方式来优化一张表,OPTIMIZE TABLE比较容易,但

是myisamchk更快。也没有在一个实用程序和服务器之间不必要的交互可能性,因为当你使用

OPTIMIZE TABLE时,服务器做所有的工作。

myisamchk也有你可用来改进一个表的性能的很多其他选项:

-S, --sort-index
 
-R index_num, --sort-records=index_num
 
-a, --analyze
 
对于选项完整的描述见13.1.1 myisamchk调用语法。
 
**************************************************
///牵手迁移问题:
***************************************************
mysql> select * from qs_member_table limit 2;
ERROR 1033: Incorrect information in file: './qs_52_table/qs_member_table.frm'
mysql> select * from qs_member_table limit 2;
ERROR 1105: File '/usr/local/mysql/var/qs_52_table/qs_member_table.MYD' not found

(Errcode: 13)
mysql> select * from qs_member_table limit 2;
ERROR 1105: File '/usr/local/mysql/var/qs_52_table/qs_member_table.MYD' not found

(Errcode: 13)
mysql> exit
Bye
[root@ccnpic root]# chown -R mysql:mysql

/usr/local/mysql/var/qs_52_table/qs_member_table.MYD;
[root@ccnpic root]# chown -R mysql:mysql

/usr/local/mysql/var/qs_52_table/qs_member_table.MYD;
[root@ccnpic root]# mysql -u root -p
新建qs_member_table.frm表结构覆盖
可能是因为表的结构不兼容的问题!

、、、、、、、、、、、、、、、、
ERROR 2013: Lost connection to MySQL server during query
‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’
ERROR 2006: MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    25
Current database: qianshou1
使用mysql做数据库还原的时候,由于有些数据很大,会出现这样的错误:The MySQL Server

returned this Error:MySQL Error Nr.2006-MySQL server has gone away。我的一个150mb的备

份还原的时候就出现了这错误。解决的方法就是找到mysql安装目录,找到my.ini文件,在文件的

最后添加:max_allowed_packet = 10M(也可以设置自己需要的大小)。 max_allowed_packet 参数

的作用是,用来控制其通信缓冲区的最大长度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值