MySQL – Innodb motor engine

mysql_logo

Me ha pasado una cosa curiosa. Entiendo que es más debido a un procedimiento que yo no conocía que a un bug, pero en todo caso, lo comento.

Tenemos una instalación nueva, de MySQL, versión 5.077 en un CentOS 5, por ejemplo. Por defecto en la mayoría de instalaciones el motor de base de datos será MyISAM. El caso es que importo una base de datos en las que las tablas son Innodb. Pero al entrar vía phpmyadmin veo que el motor que sale es MyISAM. Me sorprende porque no tenía puesto el

skip-innodb

en la configuración de MySQL. Otra pista, el phpmyadmin, en el link que te muestra los motores de almacenamiento me muestra 3, pero ninguno es Innodb. Muy raro porque si entro por consola y ejecuto

mysql> show engines;
| InnoDB | YES | Supports transactions, row-level locking, and foreign keys

me devuelve que si que está habilitado. La solución la encontré de chiripa porque no tenía ni idea de que estaba pasando. Para arreglarlo tuve que renombrar los ficheros de log innodb, de la siguiente forma.

# service mysqld stop
# mv /var/lib/mysql/ib_logfile0 /var/lib/mysql/ib_logfile0.bak
# mv /var/lib/mysql/ib_logfile1 /var/lib/mysql/ib_logfile1.bak
# service mysqld start

En el mismo link donde un colega posteó la solución, otro tipo plantea la solución al dilema:

I did a little research on why your solution works and it seems that though InnoDB is enabled by default, MySQL seems to disable it automatically if your InnoDB log files get corrupted. When you remove them, they are recreated, allowing InnoDB to start again.

Links

Leave a Reply

Your email address will not be published. Required fields are marked *