.frm
のみからテーブルを復元しました および.idb
ファイル。
SQLクエリを取得してテーブルを作成します
テーブルのスキーマをすでに知っている場合は、この手順をスキップできます。
-
まず、MySQLユーティリティ をインストールします。 次に、
mysqlfrm
を使用できます コマンドプロンプト(cmd)のコマンド。 -
次に、
.frm
からSQLクエリを取得しますmysqlfrm
を使用するファイル コマンド:mysqlfrm --diagnostic <path>/example_table.frm
次に、SQLクエリを取得して、同じ構造化テーブルを作成できます。次のようになります。
CREATE TABLE `example_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(150) NOT NULL,
`photo_url` varchar(150) NOT NULL,
`password` varchar(600) NOT NULL,
`active` smallint(6) NOT NULL,
`plan` int(11) NOT NULL,
PRIMARY KEY `PRIMARY` (`id`)
) ENGINE=InnoDB;
テーブルを作成する
上記のSQLクエリを使用してテーブルを作成します。
古いデータがまだ存在する場合は、最初にそれぞれのデータベースとテーブルを削除する必要があります。データファイルのバックアップがあることを確認してください。
データを復元する
このクエリを実行して、新しいテーブルデータを削除します:
ALTER TABLE example_table DISCARD TABLESPACE;
これにより、新しい.frm
間の接続が削除されます ファイルと(新しい、空の).idb
ファイル。また、.idb
を削除します フォルダ内のファイル。
次に、古い.idb
を配置します 新しいフォルダにファイルします。例:
cp backup/example_table.ibd <path>/example_table.idb
.ibd
であることを確認してください ファイルはmysql
で読み取ることができます ユーザー、例: chown -R mysql:mysql *.ibd
を実行する フォルダ内。
このクエリを実行して古いデータをインポートします:
ALTER TABLE example_table IMPORT TABLESPACE;
これにより、.idb
からデータがインポートされます ファイルを作成し、データを復元します。