4

複雑な列のテーブルがあり、大量のデータでテーブルを埋め始めましたが、その間にクラッシュしました。

テーブルがクラッシュしたと報告されており、修復する必要があります。

phpmyadminの修復テーブルはそれを修復できませんでした。

その後、塗りつぶしプロセスを再開することにしましたが、テーブル構造を取得することさえできませんでした。

どうすればデータを取り戻すことができますか?それとも単に構造ですか?

(私はamdクワッドのxampp / windowsの下でmysqlを実行します)

4

4 に答える 4

10

PHPMyadminは、長いクエリを実行するときに問題が発生する傾向があります。特定のエラーメッセージで修復テーブルを実行できなかった場合は、投稿してください。ハングしたばかりの場合は、mysqlインストールのbinディレクトリにあるコマンドラインバージョンのmysqlを使用して修復を試す必要があります。

mysql -u username -p
mysql> use dbname;
mysql> repair table tablename;

テーブルのサイズによっては、A時間がかかる場合があります。

それが機能しない場合、テーブルでMyISAMエンジンを使用している場合は、次の方法はmyisamchkを使用することです。

于 2010-02-19T13:30:53.290 に答える
6

テーブルがmyISAMにある場合、myisamchkが最初にチェックするツールです。これは/bin、mySQLインストールのディレクトリにあります。これがその修復オプションのリストです。

万が一の場合に備えて、実行する前にデータディレクトリのバックアップコピーを作成することをお勧めしますmyisamchk

于 2010-02-19T13:12:58.887 に答える
0

サーバーが機能している場合は、1つまたは2つの簡単な手順で修復することもできます。phpmyadminに移動し、クラッシュしたテーブルを確認して、ドロップダウンから[テーブルの修復]オプションを選択します。

修復ボタンは次のとおりです。

ここに画像の説明を入力してください

于 2021-03-10T05:11:29.203 に答える
-1

次のような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);
于 2021-10-15T05:27:00.233 に答える