ホームページ >バックエンド開発 >PHPチュートリアル >クラッシュしたデータテーブルを自動的に修復する
mysql がクラッシュしました
function check_table($table){ require dirname(__FILE__) .'/connection.php'; mysql_select_db("news",$db); $ret = mysql_query("SHOW TABLE STATUS WHERE `name` = '".$table."'"); while($row = mysql_fetch_array($ret)){ if($row['Engine']!='MyISAM'){ $wrong=1; } } if($wrong){ mysql_query("REPAIR TABLE ".$table); } mysql_close($db); $wrong=$ret=$row=NULL;}
13.5.2.6. REPAIR TABLE 構文
REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TABLE
tbl_name [, tbl_name] ... [QUICK] [EXTENDED] [USE_FRM]
修復用の REPAIR TABLE盗まれたテーブル。デフォルトでは、REPAIR TABLE は myisamchk --recover tbl_name と同じ効果があります。 REPAIR TABLE は MyISAM テーブルと ARCHIVE テーブルで動作します。
ただし、!='MyISAM' の条件で REPAIR TABLE を実行しています
13.5.2.6. REPAIR TABLE 構文
REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TABLE
tbl_name [, tbl_name] ... [QUICK] [EXTEND ED][ USE_FRM]
REPAIR TABLE は、破損したテーブルを修復するために使用されます。デフォルトでは、REPAIR TABLE は myisamchk --recover tbl_name と同じ効果があります。 REPAIR TABLE は MyISAM テーブルと ARCHIVE テーブルで動作します。
ただし、!='MyISAM' の条件で REPAIR TABLE を実行しています
データテーブルの形式が MyISAM である場合、データテーブルが間違っている場合、テーブルのステータスが使用中として phpmyadmin に表示されます。
では、データテーブルのエラーをチェックして REPAIR TABLE ステートメントを実行できるのは、どのような mysql ステートメントでしょうか?
ありがとうございます。
if($row["Collation"]=='in use'){