我的数据库中的表都是innodb的,不知道什么原因,其中一张表crash了,每次查询这张表的数据,总是出现lost connection的错误,想把表drop掉都不行同样还是报lost connection错误,
请问这是什么原因?如何修复?如果不能修复,请问如何才能把表drop掉呢?

解决方案 »

  1.   

    可以考虑先执行一遍修复表操作
    查查mysqlcheck命令
      

  2.   

    lost connection 错误是由于
    max_allowed_packet变量设置了太小的值。在MYSQL提示符下输入:set global max_allowed_packet=10M或者更大 。
    这个不用重新启动MYSQL服务。
    或者在配置文件里添加
    [mysqld]
    max_allowed_packet=10M重新启动MYSQL服务
      

  3.   

    /etc/my.cnf[mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    # Default to using old password format for compatibility with mysql 3.x
    # clients (those using the mysqlclient10 compatibility package).
    old_passwords=1
    #wait_timeout=1  # 注意有没有这个,意思是连接在1秒钟内没有动作则断开。供你参考
      

  4.   

    你的情况,是因为表crash,使服务程序重启导致lost connection
    你看一下服务器的LOG。导致表crash的原因很多,比须看mysql/innodb文档对症下药.
    比较彻底的做法是先备份再重建
    备份数据时,不要备份这张表,否则可能又crash
       mysqldump --ingore-table=xxx 
      

  5.   

    查看错误日志(备份整个库),运行 repair table 表名