web-dev-qa-db-ja.com

mysqlテーブルがmyISAMまたはInnoDBエンジンを使用しているかどうかを知るにはどうすればよいですか?

MySQLでは、特定のデータベースにストレージエンジンを指定する方法はなく、単一のテーブルにのみ指定できます。ただし、次を使用して、1つのセッション中に使用するストレージエンジンを指定できます。

SET storage_engine=InnoDB;

したがって、各テーブルに指定する必要はありません。

実際にすべてのテーブルがInnoDBを使用している場合、どのように確認しますか?

78
kamal

SHOW CREATE TABLEを使用する場合、クエリからエンジンを解析する必要があります。

INFORMATION_SCHEMAデータベースからの選択は、開発者がいつでもスキーマを変更する権利を留保しているため、適切ではありません(可能性は低いですが)。

使用する正しいクエリはSHOW TABLE STATUS-データベース内のすべてのテーブルに関する情報を取得できます。

SHOW TABLE STATUS FROM `database`;

または、特定のテーブルの場合:

SHOW TABLE STATUS FROM `database` LIKE 'tablename';

返される列の1つはエンジンです。

121
TehShrike
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'db name' AND ENGINE != 'InnoDB'
15

show create table <table>トリックを行う必要があります。

3
Matt Caldwell