程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 修復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刪除多表數據

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved