migradas - ¿Cómo puedo verificar el tipo de motor MySQL para una tabla específica?
phpmyadmin change engine to innodb (11)
Otra forma más, quizás la más corta para obtener el estado de un conjunto de tablas único o combinado:
SHOW TABLE STATUS LIKE ''table'';
Luego puedes usar operadores LIKE por ejemplo:
SHOW TABLE STATUS LIKE ''field_data_%'';
Mi base de datos MySQL contiene varias tablas que utilizan diferentes motores de almacenamiento (específicamente myisam e innodb). ¿Cómo puedo saber qué tablas están usando qué motor?
Para mostrar una lista de todas las tablas en una base de datos y sus motores, use esta consulta SQL:
SELECT TABLE_NAME,
ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = ''dbname'';
Reemplace dbname
con su nombre de base de datos.
Si eres un usuario de Linux:
Para mostrar los motores de todas las tablas para todas las bases de datos en un servidor mysql, sin las tablas 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)
Puede que te guste esto, si estás en Linux, al menos.
Abrirá toda la información de todas las tablas en less
, presione -S
para cortar líneas demasiado largas.
Ejemplo de salida:
--------------------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
.
.
.
Si está utilizando MySQL Workbench, puede hacer clic con el botón derecho en la tabla y seleccionar "alterar tabla".
En esa ventana puedes ver tu motor de mesa y también cambiarlo.
Un poco para modificar la respuesta de Jocker (publicaría como un comentario, pero todavía no tengo suficiente karma):
SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES where TABLE_SCHEMA = ''database'' AND ENGINE IS NOT NULL;
Esto excluye las vistas de MySQL de la lista, que no tienen un motor.
o solo
show table status;
sólo que esto incluirá todas las tablas en su base de datos.
vaya a la base de datos schema de información allí encontrará la tabla ''tablas'' y luego la selecciona;
Mysql> use information_schema; Mysql> seleccione table_name, motor de tablas;
SHOW TABLE STATUS WHERE Name = ''xxx''
Esto le dará (entre otras cosas) una columna de Engine
, que es lo que quiere.
SHOW CREATE TABLE <tablename>;
Menos analizable pero más legible que SHOW TABLE STATUS
.
SHOW CREATE TABLE <tablename>/G
lo formateará mucho mejor en comparación con la salida de
SHOW CREATE TABLE <tablename>;
El truco /G
también es útil para recordar para muchas otras consultas / comandos.
mysqlshow -i <database_name>
mostrará la información de todas las tablas de una base de datos específica.
mysqlshow -i <database_name> <table_name>
lo hará solo para una tabla específica.