mysql表标记为崩溃

时间:2010-03-30 19:39:23

标签: php mysql crash

我最近创建了一个基于ajax的即时消息应用程序,运行一段时间后我得到一个错误[table]被标记为崩溃,应该修复。怎么会发生这种情况,我该如何防止它再次发生?

3 个答案:

答案 0 :(得分:6)

http://www.pantz.org/software/mysql/fixingmysqlcrashedtables.html

供参考..这个命令修复了我的崩溃表,我有很多:

sudo mysqlcheck --auto-repair -A -u root -p

答案 1 :(得分:4)

这大部分时间都发生在MySQL Server崩溃时,它正在写在桌面上。您应该尝试运行CHECK TABLE <databasename>.<tablename>,它会检查表的内容并最终让您知道它是否真的坏了......然后您可能需要运行REPAIR TABLE <databasename>.<tablename>。您可能还想阅读that page上的内容。

如果表使用MyISAM引擎,您也可以使用MySQL发行版中的myisamchk工具(在这种情况下,我认为您应该参考that page)。

答案 2 :(得分:0)

这不是一个答案,但我想出的一个例子可能有助于其他人:

function mysql_check_and_repair($array){
    if( is_array( $array ) ) {
        foreach( $array as $table_name ) {
            $q = mysql_query( "CHECK TABLE `$table_name` QUICK" ) or die( mysql_error() );
            $a = mysql_fetch_array( $q );
            if( $a['Msg_text'] != 'Table is already up to date' && $a['Msg_text'] != 'OK' ) {
                log_error( $a['Msg_text'] );
                mysql_query( "REPAIR TABLE `$table_name`" ) or die( mysql_query() );    
            }
        }
    }else{
        return false;
    }
}

是否有任何迹象表明他们认为我应该如何执行此操作(目前正在对数据库进行任何更新但每次请求为2秒)