修复mysql表的两种方法

数据库 MySQL
如果mysql表损坏了,我们就需要进行修复,下文就为您介绍两种最常用的两种修复损坏表的方法,希望对您能够有所帮助。

修复mysql表是我们经常需要用到的,下面就教您两种修复mysql表的的方法,如果您之前遇到过此方面的问题,不妨一看。

修复mysql表第一种方法:

  1. shell> mysqlcheck -r -c -o -uuser -ppasswd db_name  

修复mysql表第二种方法,用以下这个脚本,从网上下的,似很管用.将这个脚本放在你的web根目录下,然后从web页面运行这个脚本.

  1. cat repair.php  
  2. 需要修改  
  3. $dbuser="root"; --->需要修改  
  4. $dbpw=""; --->需要修改  
  5. $dbname="db_name"; -->需要修改  
  6. #$table="search_profile";  
  7. mysql_connect($dbhost, $dbuser, $dbpw);  
  8. mysql_select_db($dbname);  
  9. if(!get_cfg_var("register_globals")) {  
  10. foreach($HTTP_GET_VARS as $key => $val) {  
  11. $$key = $val;  
  12. }  
  13. }  
  14. function checktable($table, $loops = 0) {  
  15. global $db, $nohtml;  
  16. $result = mysql_query("CHECK TABLE $table");  
  17. if(!$nohtml) {  
  18. echo "Checking table $table";  
  19. echo "TableOperationTypeText";  
  20. } else {  
  21. echo "\n>>>>>>>>>>>>>Checking Table $table\n";  
  22. echo "---------------------------------  
  23. \n";  
  24. }  
  25. $error = 0;  
  26. while($r = mysql_fetch_row($result)) {  
  27. if($r[2] == 'error') {  
  28. if($r[3] == "The handler for the table doesn't support check/repair") {  
  29. $r[2] = 'status';  
  30. $r[3] = 'This table does not support check/repair/optimize';  
  31. unset($bgcolor);  
  32. $nooptimize = 1;  
  33. } else {  
  34. $error = 1;  
  35. $bgcolor = 'red';  
  36. unset($nooptimize);  
  37. }  
  38. } else {  
  39. unset($bgcolor);  
  40. unset($nooptimize);  
  41. }  
  42. if(!$nohtml) {  
  43. echo "$r[0]$r[1]$r[2]$r[3]";  
  44. } else {  
  45. echo "$r[0] | $r[1] | $r[2] | $r[3]  
  46. \n";  
  47. }  
  48. }  
  49. if($error) {  
  50. if(!$nohtml) {  
  51. echo "Repairing table $table";  
  52. } else {  
  53. echo ">>>>>>>>>>>>>Repairing Table $table  
  54. \n";  
  55. }  
  56. $result2=mysql_query("REPAIR TABLE $table");  
  57. if($result2[3]!='OK')  
  58. $bgcolor='red';  
  59. else  
  60. unset($bgcolor);  
  61. if(!$nohtml) {  
  62. echo "$result2[0]$result2[1]$result2[2]$result2[3]";  
  63. } else {  
  64. echo "$result2[0] | $result[1] | $result2[2] | $result2[3]  
  65. \n";  
  66. }  
  67. }  
  68. if(($result2[3]=='OK'||!$error)&&!$nooptimize) {  
  69. if(!$nohtml) {  
  70. echo "Optimizing table $table";  
  71. } else {  
  72. echo ">>>>>>>>>>>>>Optimizing Table $table  
  73. \n";  
  74. }  
  75. $result3=mysql_query("OPTIMIZE TABLE $table");  
  76. $error=0;  
  77. while($r3=mysql_fetch_row($result3)) {  
  78. if($r3[2]=='error') {  
  79. $error=1;  
  80. $bgcolor='red';  
  81. } else {  
  82. unset($bgcolor);  
  83. }  
  84. if(!$nohtml) {  
  85. echo "$r3[0]$r3[1]$r3[2]$r3[3]";  
  86. } else {  
  87. echo "$r3[0] | $r3[1] | $r3[2] | $r3[3]  
  88. \n";  
  89. }  
  90. }  
  91. }  
  92. if($error&&$loops) {  
  93. checktable($table,($loops-1));  
  94. }  
  95. }  
  96. if($check) {  
  97. $tables=mysql_query("SHOW TABLES");  
  98. if(!$nohtml) {  
  99. echo "";  
  100. }  
  101. if($iterations) {  
  102. $iterations--;  
  103. }  
  104. while($table=mysql_fetch_row($tables)) {  
  105. if(substr($table[0], -8) != 'sessions') {  
  106. $answer=checktable($table[0],$iterations);  
  107. if(!$nohtml) {  
  108. echo " ";  
  109. }  
  110. flush();  
  111. }  
  112. }  
  113. if(!$nohtml) {  
  114. echo "";  
  115. }  
  116. } else {  
  117. echo "Database Table Repair Utility for Discuz! (Require MySQL 3.23 )  
  118. ".  
  119. "This script will attempt to repair corrupted databases. While it can repair most common errors,  
  120. ".  
  121. "it can not repair everything. As a side benefit it will also optimize your tables.  
  122. ".  
  123. "This script was copyrighted by Jelsoft and modified by Crossday Studio to make it apply for Discuz!.  
  124. ".  
  125. "Usage:  
  126. ".  
  127. "iterations=x (x is the number of times you wish for the script to attempt to repair a broken table)  
  128. ".  
  129. "nohtml=1 (Output text only no html. Useful for cronjobs and you wish to receive text only)  
  130. ".  
  131. "check=1 (without this you will get this screen and no checking)  
  132. ".  
  133. "Example Usage:  
  134. ".  
  135. "repair.php?html=1&check=1 (most common usage, will check a forum and return html results)  
  136. ". "repair.php?check=1&iterations=5 (try to repair damaged tables 5 times)".  
  137. "";  
  138. }  
  139. ?> 

 

 

 

【编辑推荐】

MySQL表管理命令介绍

php mysql创建临时表

mysql快速建表的方法

mysql表索引的相关信息

深入研究MySQL删除多表数据

责任编辑:段燃 来源: 互联网
相关推荐

2010-06-17 12:48:05

livecd 修复Gr

2011-03-30 17:04:24

MySQL添加用户

2011-07-14 17:50:50

domino数据库

2010-05-24 15:08:46

MySQL访问权限

2010-11-23 11:53:37

MySQL查询表字段

2010-09-02 10:36:51

SQL删除

2010-08-04 17:41:52

挂载NFS

2011-04-25 09:53:31

C++mysql

2010-11-09 13:09:58

SQL Server分

2010-11-10 13:22:41

SQL Server备

2010-09-13 13:05:03

sql server分

2009-09-25 14:04:09

Hibernate eHibernate h

2010-04-13 09:50:44

Oracle跟踪

2013-01-09 10:36:28

mysql主从不同步

2011-08-30 15:28:33

Oracle 10g表

2010-08-26 16:49:09

DB2导入导出

2010-07-26 15:42:34

Perl模块

2011-05-24 09:18:59

C++连接mysql数据库

2011-08-03 17:23:31

注册表编辑器注册表组策略

2010-08-02 16:58:08

Flex配置文件
点赞
收藏

51CTO技术栈公众号