修复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)".
 - "";
 - }
 - ?>
 
                分享名称:修复mysql表的两种方法
                
                本文路径:http://www.csdahua.cn/qtweb/news29/449329.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网