個別にテーブル名を指定せず、MyISAMからInnoDBへ変更するためには?

投稿者: Anonymous

1データベースの中に、MyISAMテーブルとInnoDBテーブルが混在しています
・全てInnoDBへ変更したいです
・テーブルを指定すれば変更できるのですが、数が多いため面倒です

質門
・指定データベースの全テーブルを(1つ1つテーブル名指定せず)InnoDBテーブルへ変更するためにはどうすれば良いでしょうか?
・下記みたいな感じで実行したいのですが…

ALTER TABLE データベース名.* ENGINE=InnoDB;

解決

手順1:クエリ作成
 下記のクエリを実行するとENGINEMyISAMのテーブルのみ抽出し、
 そのテーブルをInnoDBに変更するクエリが出力されます。

SELECT CONCAT('ALTER TABLE ',table_name, ' ENGINE=InnoDB;')
FROM information_schema.tables
WHERE engine='MyISAM' AND table_schema='database_name';

手順2:「手順1」で出力されたクエリを全て実行します。


クエリ1つで全てのテーブルを一括で変えたい、と言うことであれば出来ないかと思います。

回答者: user10259

Leave a Reply

Your email address will not be published. Required fields are marked *