No todos los programadores, a la hora de crear una base de datos, definen el motor de la misma, y, en versiones de MySQL más antiguas, el motor por defecto de MySQL es MyISAM. MyISAM es potente para bases de datos de “solo lectura” pero tiene el gran inconveniente de que provoca bloqueos, algo muy problemático en bases de datos de lectura/escritura continua y alterna.

Por ello, en ocasiones nos encontraremos con tablas de bases de datos que se encuentran en MyISAM y tienen esta problemática. La solución consiste simple y llanamente en modificar el motor de la tabla a InnoDB, y existen dos formas de realizar el cambio, una rápida y sencilla, y una más tediosa pero segura, y que recomiendo en casos en los que las tablas tengan muchos datos.

IMPORTANTE: Realizad siempre un backup de la BBDD/Tabla antes de realizar cualquier cambio en la misma

Para el primer caso, la solución es tan simple como realizar un alter table:

 

Con esto, el motor se cambiará a InnoDB, y no debería existir problemas, pero en ocasiones se producen inconsistencias, por lo que se recomienda el segundo procedimiento:

Para ello, entramos a MySQL y accedemos a la base de datos en la que se encuentra la tabla a modificar.

 

 

Una vez dentro, debemos realizar un show create table de la tabla a modificar, para que nos devuelva la sintaxis de creación de la tabla.

 

El show create table nos devolverá lo siguiente, en nuestro caso:

 

Lo que debemos hacer es editar el nombre de la tabla a un nombre temporal, y el motor a InnoDB:

 

Una vez  realizado esto, tendremos dos tablas, una “nombre_de_tabla” en myisam, y con contenido, y una “nombre_de_tabla_temporal” en innodb y vacía, por lo que el siguiente paso es volcar la información a la tabla temporal:

 

Por último, solo nos queda renombrar ambas tablas:

 

 

Y con esto, habríamos modificado la tabla a InnoDB de forma segura.


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *