ホームページ >バックエンド開発 >PHPチュートリアル >クラッシュしたデータテーブルを自動的に修復する

クラッシュしたデータテーブルを自動的に修復する

WBOY
WBOYオリジナル
2016-06-23 14:23:221075ブラウズ

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;}

上記のコードはデータテーブルがクラッシュしたかどうかを確認できますか?
クラッシュしたデータテーブルは $row['Engine'] = 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'){

であるべきだと思われますよね?

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。