Как я знаю, использует ли таблица mysql myISAM или InnoDB Engine?

В MySQL нет способа указать механизм хранения для определенной базы данных, только для отдельных таблиц. Однако вы можете указать механизм хранения, который будет использоваться в течение одного сеанса:

SET storage_engine=InnoDB;

Таким образом, вам не нужно указывать это для каждой таблицы.

Как я могу подтвердить, если действительно все таблицы используют InnoDB?

3 ответа

Решение

Если вы используете SHOW CREATE TABLE, вам нужно разобрать движок в запросе.

Выбор из базы данных INFORMATION_SCHEMA является плохой практикой, поскольку разработчики оставляют за собой право изменить свою схему в любое время (хотя это маловероятно).

Правильный запрос: SHOW TABLE STATUS - вы можете получить информацию обо всех таблицах в базе данных:

SHOW TABLE STATUS FROM `database`;

Или для конкретной таблицы:

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

Одна из колонок, которую вы получите, это Engine.

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

show create table <table> должен сделать свое дело.

Другие вопросы по тегам