Как я могу проверить тип движка MySQL для конкретной таблицы?

Моя база данных MySQL содержит несколько таблиц, использующих разные механизмы хранения (в частности, myisam и innodb). Как узнать, какие таблицы на каком двигателе?

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
417
0
343 078
13
Перейти к ответу Данный вопрос помечен как решенный

Ответы 13

Ответ принят как подходящий

SHOW TABLE STATUS WHERE Name = 'xxx'

Это даст вам (среди прочего) столбец Engine, который вам и нужен.

Если моя таблица повреждена, она просто показывает Engine = NULL и имеет «Комментарий», предлагающий мне восстановить таблицу. Однако, прежде чем я узнаю, как отремонтировать стол, я предполагаю, что мне нужно знать движок (я еще не дошел до этого, если честно.) Поэтому комментарий @Joker ниже был для меня гораздо более полезным.

harperville 09.09.2013 17:33

@Greg, использовать это решение или решение Джокера?

Pacerier 24.02.2015 08:30

@Pacerier - Оба работают нормально. Разница в том, что это решение дает информацию для одной таблицы, в то время как решение Джокера показывает тип движка для всех таблиц в базе данных (при этом оно немного более читабельно).

kramer65 20.03.2016 11:36

@Greg, кстати, почему не отображается информация о двигателе, когда мы делаем show full columns from t1?

Pacerier 13.11.2017 05:13
SHOW CREATE TABLE <tablename>;

Менее анализируемый, но более читаемый, чем SHOW TABLE STATUS.

или просто

show table status;

просто это перечислит все таблицы в вашей базе данных.

@NikolaiSamteladze, у вас в выбранной db таблицы есть?

Pacerier 24.02.2015 08:31

Чтобы показать список всех таблиц в базе данных и их механизмов, используйте этот запрос SQL:

SELECT TABLE_NAME,
       ENGINE
FROM   information_schema.TABLES
WHERE  TABLE_SCHEMA = 'dbname';

Замените dbname именем своей базы данных.

Это отличный b / c, он отфильтровывает все, кроме имени таблицы и движка.

Tone 23.03.2011 16:05

Чтобы получить движок конкретной таблицы, вы можете использовать: SELECT ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = '<database_name>' AND TABLE_NAME = '<table_name>'

userlond 24.04.2017 06:10

Это дает мне пустой набор в MySQL 5.6.37.

nnyby 03.05.2018 19:57

Это лучший ответ, потому что это настоящий SQL, поэтому я могу делать такие вещи, как COUNT(*) и GROUP BY.

Brandon 08.08.2018 16:31

Небольшая поправка к ответу Джокера (я бы опубликовал как комментарий, но у меня пока недостаточно кармы):

SELECT TABLE_NAME, ENGINE
  FROM information_schema.TABLES
 WHERE TABLE_SCHEMA = 'database' AND ENGINE IS NOT NULL;

Это исключает представления MySQL из списка, у которых нет движка.

SHOW CREATE TABLE <tablename>\G

отформатирует его намного лучше по сравнению с выводом

SHOW CREATE TABLE <tablename>;

Уловку \G также полезно запомнить для многих других запросов / команд.

\ G взломать только под cli mysql

gaRex 17.06.2015 22:38

перейдите в базу данных information_schema, там вы найдете таблицу «таблицы» и выберите ее;

Mysql> используйте information_schema; Mysql> выберите имя_таблицы, движок из таблиц;

mysqlshow -i <database_name>

покажет информацию для всех таблиц определенной базы данных.

mysqlshow -i <database_name> <table_name> 

будет делать это только для конкретной таблицы.

Еще один способ, возможно, самый короткий, чтобы получить статус одной или согласованного набора таблиц:

SHOW TABLE STATUS LIKE 'table';

Затем вы можете использовать операторы LIKE, например:

SHOW TABLE STATUS LIKE 'field_data_%';

Если вы пользователь Linux:

Чтобы показать механизмы для всех таблиц для всех баз данных на сервере mysql, без таблиц information_schema, mysql, performance_schema:

less < <({ for i in $(mysql -e "show databases;" | cat | grep -v -e Database-e information_schema -e mysql -e performance_schema); do echo "--------------------$i--------------------";  mysql -e "use $i; show table status;"; done } | column -t)

Вам это может понравиться, по крайней мере, если вы работаете в Linux.

Откроет всю информацию для всех таблиц в less, нажмите -S, чтобы вырезать слишком длинные строки.

Пример вывода:

--------------------information_schema--------------------
Name                                                        Engine              Version  Row_format  Rows   Avg_row_length  Data_length  Max_data_length     Index_length  Data_free  Auto_increment  Create_time  Update_time  Check_time  C
CHARACTER_SETS                                              MEMORY              10       Fixed       NULL   384             0            16434816            0             0          NULL            2015-07-13   15:48:45     NULL        N
COLLATIONS                                                  MEMORY              10       Fixed       NULL   231             0            16704765            0             0          NULL            2015-07-13   15:48:45     NULL        N
COLLATION_CHARACTER_SET_APPLICABILITY                       MEMORY              10       Fixed       NULL   195             0            16357770            0             0          NULL            2015-07-13   15:48:45     NULL        N
COLUMNS                                                     MyISAM              10       Dynamic     NULL   0               0            281474976710655     1024          0          NULL            2015-07-13   15:48:45     2015-07-13  1
COLUMN_PRIVILEGES                                           MEMORY              10       Fixed       NULL   2565            0            16757145            0             0          NULL            2015-07-13   15:48:45     NULL        N
ENGINES                                                     MEMORY              10       Fixed       NULL   490             0            16574250            0             0          NULL            2015-07-13   15:48:45     NULL        N
EVENTS                                                      MyISAM              10       Dynamic     NULL   0               0            281474976710655     1024          0          NULL            2015-07-13   15:48:45     2015-07-13  1
FILES                                                       MEMORY              10       Fixed       NULL   2677            0            16758020            0             0          NULL            2015-07-13   15:48:45     NULL        N
GLOBAL_STATUS                                               MEMORY              10       Fixed       NULL   3268            0            16755036            0             0          NULL            2015-07-13   15:48:45     NULL        N
GLOBAL_VARIABLES                                            MEMORY              10       Fixed       NULL   3268            0            16755036            0             0          NULL            2015-07-13   15:48:45     NULL        N
KEY_COLUMN_USAGE                                            MEMORY              10       Fixed       NULL   4637            0            16762755            0 

.
.
.

Если вы используете MySQL Workbench, щелкните таблицу правой кнопкой мыши и выберите alter table.

В этом окне вы можете увидеть свой движок таблицы, а также изменить его.

show table status from database_name;

В нем будут перечислены все таблицы из указанной базы данных. Пример вывода

sample output of mysql db

show table status where name=your_desired_table_name;

Он покажет механизм хранения, используемый упомянутой таблицей.

Если вы парень GUI и просто хотите найти его в PhpMyAdmin, выберите таблицу по вашему выбору и перейдите на вкладку Operations >> Table options >> Storage Engine. Вы даже можете изменить его оттуда, используя раскрывающийся список параметров.

PS: Это руководство основано на версии 4.8 PhpMyAdmin. Не может гарантировать тот же путь для очень старых версий.

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