3

このクエリを実行しようとしています:

alter table about_member discard tablespace;

しかし、そうすると、エラーログに次のように出力されます。

InnoDB: エラー: テーブル `diskise`.`about_member`
InnoDB: 破棄できないシステム テーブルスペース 0 にあります

このテーブルスペースを破棄して、所有しているバックアップをインポートできるようにするにはどうすればよいですか?

4

2 に答える 2

1

このマニュアルページを参照してください:

デフォルトでは、すべての InnoDB テーブルとインデックスはシステム テーブルスペースに格納されます。別の方法として、各 InnoDB テーブルとそのインデックスを独自のファイルに格納できます。この設定が有効なときに作成される各テーブルには独自のテーブルスペースがあるため、この機能は「複数のテーブルスペース」と呼ばれます。

表ごとの表領域の利点

テーブルを切り捨てたり削除したりするときに、ディスク領域を再利用できます。file-per-table モードがオフになっているときに作成されたテーブルの場合、切り捨てまたは削除すると、ibdata ファイル内に内部的に空き領域が作成されます。その空き領域は、新しい InnoDB データにのみ使用できます。

デフォルトのテーブルスペースにテーブルを作成したように聞こえるので、テーブルスペースを破棄することはできません。とはいえ、ディスク容量が不足していない限り、最初にテーブルスペースを破棄せずにデータをインポートできるはずです。

于 2013-11-26T04:53:15.543 に答える