サーチ…


基本的な変換

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