09 enero 2017

Migrar tablas MyISAM a Innodb

La semana pasada instalé un blog de wordpress para el que me proporcionaron unos scripts de instalación. Estos scripts me los hacían llegar de otra empresa a la que uno de nuestros clientes había contratado el diseño de su blog.

Me encontré con varios problemas, ya que la versión de la base de datos era 5.7, y después de solucionarlos (básicamente bajando un poco la seguridad), me encontré con que la base de datos se había instalado con tablas MyISAM en lugar de InnoDB.

Buscando cómo migrar las tablas, encontré una buena solución en Stack Overflow que detallo a continuación:

En el cliente de mysql pegamos el siguiente código


 SET @DATABASE_NAME = 'name_of_your_db';  
 SELECT CONCAT('ALTER TABLE `', table_name, '` ENGINE=InnoDB;') AS sql_statements  
 FROM  information_schema.tables AS tb  
 WHERE  table_schema = @DATABASE_NAME  
 AND   `ENGINE` = 'MyISAM'  
 AND   `TABLE_TYPE` = 'BASE TABLE'  
 ORDER BY table_name DESC;  



El resultado de esta consulta lo volvemos a pegar en el cliente y hará la transformación que estamos buscando

El enlace a la discusión sobre ello aquí