Username: Password:

修复损坏的mysql表
来源: ChinaUnix博客  作者: ChinaUnix博客   发布时间:2007-01-01 19:56:00

第一种方法:
shell> mysqlcheck -r -c -o -uuser -ppasswd db_name
第二种方法,用以下这个脚本,从网上下的,似很管用.将这个脚本放在您的web根目录下,然后从web页面运行这个脚本.
cat repair.php
需要修改
$dbuser="root";  --->需要修改
$dbpw="";  --->需要修改
$dbname="db_name"; -->需要修改
#$table="search_profile";
mysql_connect($dbhost, $dbuser, $dbpw);
mysql_select_db($dbname);
if(!get_cfg_var("register_globals")) {
        foreach($HTTP_GET_VARS as $key => $val) {
                $$key = $val;
        }
}
function checktable($table, $loops = 0) {
  global $db, $nohtml;
   $result = mysql_query("CHECK TABLE $table");
   if(!$nohtml) {
     echo "Checking table $table";
     echo "TableOperationTypeText";
   } else {
     echo "\n>>>>>>>>>>>>>Checking Table $table\n";
     echo "---------------------------------
\n";
   }
   $error = 0;
   while($r = mysql_fetch_row($result)) {
     if($r[2] == ’error’) {
       if($r[3] == "The handler for the table doesn’t support check/repair") {
         $r[2] = ’status’;
         $r[3] = ’This table does not support check/repair/optimize’;
         unset($bgcolor);
         $nooptimize = 1;
       } else {
         $error = 1;
         $bgcolor = ’red’;
         unset($nooptimize);
       }
     } else {
       unset($bgcolor);
       unset($nooptimize);
     }
     if(!$nohtml) {
       echo "$r[0]$r[1]$r[2]$r[3]";
     } else {
       echo "$r[0] | $r[1] | $r[2] | $r[3]
\n";
     }
   }
   if($error) {
     if(!$nohtml) {
       echo "Repairing table $table";
     } else {
       echo ">>>>>>>>>>>>>Repairing Table $table
\n";
     }
     $result2=mysql_query("REPAIR TABLE $table");
     if($result2[3]!=’OK’)
       $bgcolor=’red’;
     else
       unset($bgcolor);
     if(!$nohtml) {
       echo "$result2[0]$result2[1]$result2[2]$result2[3]";
     } else {
       echo "$result2[0] | $result[1] | $result2[2] | $result2[3]
\n";
     }
   }
   if(($result2[3]==’OK’||!$error)&&!$nooptimize) {
     if(!$nohtml) {
       echo "Optimizing table $table";
     } else {
       echo ">>>>>>>>>>>>>Optimizing Table $table
\n";
     }
     $result3=mysql_query("OPTIMIZE TABLE $table");
     $error=0;
     while($r3=mysql_fetch_row($result3)) {
       if($r3[2]==’error’) {
         $error=1;
         $bgcolor=’red’;
       } else {
         unset($bgcolor);
       }
       if(!$nohtml) {
         echo "$r3[0]$r3[1]$r3[2]$r3[3]";
       } else {
         echo "$r3[0] | $r3[1] | $r3[2] | $r3[3]
\n";
       }
     }
   }
   if($error&&$loops) {
     checktable($table,($loops-1));
   }
}
if($check) {
  $tables=mysql_query("SHOW TABLES");
  if(!$nohtml) {
    echo "";
  }
  if($iterations) {
    $iterations--;
  }
  while($table=mysql_fetch_row($tables)) {
     if(substr($table[0], -8) != ’sessions’) {
       $answer=checktable($table[0],$iterations);
       if(!$nohtml) {
         echo " ";
       }
       flush();
     }
  }
  if(!$nohtml) {
    echo "";
  }
} else {
  echo "Database Table Repair Utility for Discuz! (Require MySQL 3.23+)
".
       "This script will attempt to repair corrupted databases. While it can repair most common errors,
".
       "it can not repair everything. As a side benefit it will also optimize your tables.
".
       "This script was copyrighted by Jelsoft and modified by Crossday Studio to make it apply for Discuz!.
".
       "Usage:
".
       "iterations=x (x is the number of times you wish for the script to attempt to repair a broken table)
".
       "nohtml=1 (Output text only no html. Useful for cronjobs and you wish to receive text only)
".
       "check=1 (without this you will get this screen and no checking)
".
       "Example Usage:
".
       "repair.php?html=1&check=1 (most common usage, will check a forum and return html results)
".       "repair.php?check=1&iterations=5 (try to repair damaged tables 5 times)".
       "";
}
?>
               
               
               

本文来自ChinaUnix博客,假如查看原文请点:http://blog.chinaunix.net/u1/42825/showart_441151.html

喜欢本文,那就收藏到:

    Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网
相关评论  我也要评论
还没有关于此文章的相关评论!
  • 昵称: (为空则显示guest)
  • 评论分数: ★ ★ ★★★ ★★★★ ★★★★★
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
  • 导航
    赞助商
    文章类别
    订阅