修复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 $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)".
- "";
- }
- ?>
【编辑推荐】