修复mysql表是我们经常需要用到的,下面就教您两种修复mysql表的的方法,如果您之前遇到过此方面的问题,不妨一看。
修复mysql表第一种方法:
shell> mysqlcheck -r -c -o -uuser -ppasswd db_name
修复mysql表第二种方法,用以下这个脚本,从网上下的,似很管用.将这个脚本放在你的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 $tablen"; 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)". ""; } >