1. ホーム
  2. mysql

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

2023-04-06 23:14:47

質問

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

SET storage_engine=InnoDB;

ということで、テーブルごとに指定する必要はありません。

すべてのテーブルがInnoDBを使用していることを確認するにはどうすればよいですか。

どのように解決するのですか?

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

INFORMATION_SCHEMAデータベースから選択することは、開発者がいつでもそのスキーマを変更する権利を保持しているため(ありえないことですが)、良くない方法です。

使用すべき正しいクエリは テーブルの状態を表示する - を使えば、データベース内のすべてのテーブルの情報を得ることができます。

SHOW TABLE STATUS FROM `database`;

あるいは特定のテーブルのために

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

返ってくるカラムのひとつがEngineです。