複雑な列のテーブルがあり、大量のデータでテーブルを埋め始めましたが、その間にクラッシュしました。
テーブルがクラッシュしたと報告されており、修復する必要があります。
phpmyadminの修復テーブルはそれを修復できませんでした。
その後、塗りつぶしプロセスを再開することにしましたが、テーブル構造を取得することさえできませんでした。
どうすればデータを取り戻すことができますか?それとも単に構造ですか?
(私はamdクワッドのxampp / windowsの下でmysqlを実行します)
PHPMyadminは、長いクエリを実行するときに問題が発生する傾向があります。特定のエラーメッセージで修復テーブルを実行できなかった場合は、投稿してください。ハングしたばかりの場合は、mysqlインストールのbinディレクトリにあるコマンドラインバージョンのmysqlを使用して修復を試す必要があります。
mysql -u username -p
mysql> use dbname;
mysql> repair table tablename;
テーブルのサイズによっては、A時間がかかる場合があります。
それが機能しない場合、テーブルでMyISAMエンジンを使用している場合は、次の方法はmyisamchkを使用することです。
テーブルがmyISAMにある場合、myisamchkが最初にチェックするツールです。これは/bin
、mySQLインストールのディレクトリにあります。これがその修復オプションのリストです。
万が一の場合に備えて、実行する前にデータディレクトリのバックアップコピーを作成することをお勧めしますmyisamchk
。
次のようなphpスクリプトも使用できます。
<?php
$host="localhost";
$user="db_username";
$password="db_password";
$db="database_name";
// connect to database
$con = mysqli_connect($host,$user,$password);
// select the correct database
mysqli_select_db($con,$db);
// get a list of the tables
$alltables = mysqli_query($con,"SHOW TABLES;");
// record the output
$output = array();
while($table = mysqli_fetch_assoc($alltables)){
foreach($table as $db => $tablename){
$sql = 'REPAIR TABLE '.$tablename.';';
$response = mysqli_query($con,$sql) or die(mysqli_error($con));
$output[] = mysqli_fetch_assoc($response);
};
};
// print output
print_r($output);