修复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表的两种方法
网站地址:http://www.hantingmc.com/qtweb/news29/449329.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联