Convertir una base de datos (o una tabla) de MyISAM a InnoDB
Base de datos de MyISAM a InnoDBConvertir tablas MyISAM a InnoDB con phpMyAdmin
La forma más fácil de cambiar el motor de base de datos de una tabla de base de datos MySQL es a través de phpMyAdmin disponible en cPanel, Vesta o cualquier otro panel de administración. Para encontrar las tablas MyISAM lo más útil es Mirar en "tipo":
Buscar tipo de tabla MyISAMALTER TABLE wp_tabla_que_sea ENGINE=InnoDB;
Pasar a InnoDB PhpMyAdminConvertir tablas MyISAM a InnoDB con SSH
Si bien puedes convertir manualmente tabla por tabla, no es muy práctico si tiene muchas tablas para convertir o muchas bases de datos. Para esto en mucho más rápido hacerlo por consola SSH:- Nos conectamos por SSH con usuario root
- Ingresa lo siguiente en la línea de comandos y usa su contraseña de MySQL. Asegúrese de sustituir su nombre de usuario (por ejemplo,
MiUsuario) y su base de datos (por ejemplo,Mi_Base_de_Datos) en los dos lugares apropiados, a continuación:mysql -B --user=MiUsuario --host=127.0.0.1 --password Mi_Base_de_Datos --disable-column-names --execute "SELECT CONCAT('ALTER TABLE ',TABLE_NAME,' ENGINE=InnoDB;') FROM INFORMATION_SCHEMA.TABLES WHERE ENGINE='MyISAM' AND table_schema='Mi_Base_de_Datos';" - Copia el resultado que esto genera, y pégalo en un editor de texto.
- Vuelve al terminal SSH (shell) nuevamente, ejecuta el siguiente comando para acceder al indicador de comandos de MySQL. Asegúrate de sustituir su nombre de usuario (por ejemplo,
MiUsuario) y el nombre de la base de datos (por ejemplo,Mi_Base_de_Datos) a continuación:mysql --user=MiUsuario --host=127.0.0.1 --password i_Base_de_Datos - Copia los resultados de los dos pasos anteriores y pégalas en tu terminal y ejecutalo.
Solución al error "ERROR 1214 (HY000) at line 2956: The used table type doesn't support FULLTEXT indexes"
En ocasiones hay tablas que no se pueden convertir y que nos lanzan el error "The used table type doesn't support FULLTEXT indexes". Este error lo pueden sacar tanto desde phpMyAdmin como desde consola por SSH. Ocurre por que alguna parte de la tabla tiene indices FULLTEXT y estos no son soportados por InnoDB. Para convertir la tabla hay que borrar estos FULLTEXT indexes desde el terminal: Ver las tablas con indices:SHOW INDEX FROM admin_infoescuelas3.wp_2_posts;
Los pasos a seguir son los siguientes:
- Nos conectamos a terminal
- Nos conectamos a Mysql con
# mysql - Nos conectamos a la base de datos con las tablas a convertir:
MariaDB [(none)]> connect nombre_basedatos -
Buscamos los indices dentro de la tabla que nos da el error con:
SHOW INDEX FROM nombre_basedatos.nombre_tabla; - Vemos el nombre del indice. Esto nos devolverá algo tipo:
Indices fulltext - Por último eliminamos los 2 indices FULLTEXT con:
DROP INDEX Keyname_indice ON nombre_tabla;en este caso seríaDROP INDEX yarpp_content ON wp_posts;
ALTER TABLE nombre_basedatos.nombre_tabla ENGINE=InnoDB;
Y ya tendríamos la base de datos completa en InnoDB