MySQL
MyISAMからInnoDBへの変換
サーチ…
基本的な変換
ALTER TABLE foo ENGINE=InnoDB;
これはテーブルを変換しますが、エンジン間の違いは考慮しません。ほとんどの違いは、特に小さなテーブルでは問題になりません。しかし、混雑したテーブルの場合は、他の考慮事項も考慮する必要があります。 変換に関する考慮事項
1つのデータベースですべてのテーブルを変換する
1つのデータベース内のすべてのテーブルを簡単に変換するには、以下を使用します。
SET @DB_NAME = DATABASE();
SELECT CONCAT('ALTER TABLE `', table_name, '` ENGINE=InnoDB;') AS sql_statements
FROM information_schema.tables
WHERE table_schema = @DB_NAME
AND `ENGINE` = 'MyISAM'
AND `TABLE_TYPE` = 'BASE TABLE';
注:
DATABASE()
関数が機能するには、データベースに接続している必要がありNULL
。それ以外の場合は、NULL
が返されNULL
。これは、データベースを指定せずに接続できるようにするため、サーバに付属の標準のmysqlクライアントに適用されます。
このSQL文を実行して、データベース内のすべてのMyISAM
テーブルを取得します。
最後に、出力をコピーしてSQLクエリを実行します。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow