質問: **1データベースの中に、MyISAMテーブルとInnoDBテーブルが混在しています** ・全てInnoDBへ変更したいです ・テーブルを指定すれば変更できるのですが、数が多いため面倒です **質門** ・指定データベースの全テーブルを(1つ1つテーブル名指定せず)InnoDBテーブルへ変更するためにはどうすれば良いでしょうか? ・下記みたいな感じで実行したいのですが... ``` ALTER TABLE データベース名.* ENGINE=InnoDB; ```
回答: 手順1:クエリ作成 下記のクエリを実行すると`ENGINE`が`MyISAM`のテーブルのみ抽出し、 そのテーブルを`InnoDB`に変更するクエリが出力されます。 ``` SELECT CONCAT('ALTER TABLE ',table_name, ' ENGINE=InnoDB;') FROM information_schema.tables WHERE engine='MyISAM' AND table_schema='database_name'; ``` 手順2:「手順1」で出力されたクエリを全て実行します。 クエリ1つで全てのテーブルを一括で変えたい、と言うことであれば出来ないかと思います。