龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 数据库类 > MySQL 技术 >

修复mysql表的两种方法

时间:2011-04-12 23:18来源:未知 作者:admin 点击:
分享到:
修复mysql表是我们经常需要用到的,下面就教您两种修复 mysql 表的的方法,如果您之前遇到过此方面的问题,不妨一看。 修复mysql表第一种方法: shell mysqlcheck-r-c-o-uuser-ppasswddb_name 修复

修复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 $tablen";  
  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删除多表数据


精彩图集

赞助商链接