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