我的mysql最近出现了问题,就是对其中的一个表salesquotation_color进行查询,删除,备份操作事,服务就断掉,提示为“查询时丢失了到 MySQL 服务器的连接”,其它的表都没有问题。怀疑为这个表已经损坏了。   
  表结构都是innodb类型的,我把data目录中的文件放到另外一个数据库中,仍然不能打开,data目录下有ib_logfile0,ib_logfile1,ibdata1,wincodb文件夹,.frm文件都在,没有问题,都放在了wincodb下。用的是Windows 2000 server,内存为2G。
  我看到这个论坛里有这样的帖子,和我碰到的情况类似,已经解决了,只是没有贴出解决的方法,请问应该如何恢复这个表的数据呢? 
 

解决方案 »

  1.   

    innodb表损坏,可能导致mysqld不断地crash。
    在用户访问到有问题数据的位置就可能导致crash。而mysql目前没有修复innodb 表的工具,只能用innodb_force_recovery=1,
    避免在导出数据时再crash。在my.cnf or my.ini 中设置好后重启库,再用 mysqldump或者select *把出问题的表导出来。然后重新导入(删除原表)。如果数据量大的话,就得慢慢等了。
      

  2.   

    如果还可以对此表进行操作,可以修改其引擎
    alter table test engine=myisam
    再用myisam的修复工具进行修复
      

  3.   

    看了用户名为bread213(bread)的那个帖子,就是我这个情况,请问bread213大哥,你的那个是问题是怎么解决的?
      

  4.   

    修改innodb_force_recovery=1后,用mySql Administrator工具进行导出。关闭后将设置改为innodb_force_recovery=0,然后进行修复性导入,数据可以使用了。只是mySql Administrator是英文版的,导出和导入中有好多选项,不知道选与不选对数据有什么影响。哈哈,不过现在数据可以恢复啦,多谢您的帮忙!
      

  5.   

    没有影响,我用SQLYOG备份(英文),一样可以使用
      

  6.   

    你只是怀疑表损坏了?实际上check table 没有?或者是 在LOG里面有没有看到诸如ibdata 和 ib_log 以及 checkpoint相关的信息?
      

  7.   

    mysql>check table salesquotation_color;
    提示为OK.
      

  8.   

    是的,大体就是使用的这个方法,只是我在mysql administrator工具下做的导入和导出操作,出错的表已经恢复了。你说这个方法很安全呀,呵呵,那就好了。终于弄好了,谢谢大家!