Clicky

Error PhpMyAdmin MySQL ha dicho: Documentación #1036 - Table is read only

PhpMyAdmin Logo

Casi siempre es necesario el reinicio de un servidor para que se hagan efectivos los cambios

El error del título se me produjo al importar en PhpMyAdmin una tabla que había modificado manualmente y quería substituirla por la antigua, con lo cual vacié esta tabla antigua e intente la importación de la nueva, como siempre había hecho sin ningún problema. Pero PhpMyAdmin me devolvió el error 500 de abajo:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

error 500 en PhpMyAdmin

Tengo que decir que últimamente no había tenido necesidad de hacer un tipo de importación como este, por lo que el error me dejó algo sorprendido. También debo aclarar que sí he estado haciendo reinstalaciones de varios servidores (Apache, Php) en el server Centos 6.3. (Para los impacientes, tengo que decirles que el error de arriba se produce por un bloqueo del mod_security de Apache (el que también actualicé hace poco).

Ante la posibilidad inmediata de solucionarlo, ya que en un primer lugar no achaqué que el mod_security fuera el causante del error, tuve que recurrir a otro método para recuperar la tabla perdida, tirando de las copias de seguridad de la librería MYSQL que mi en servidor tengo programado que se realizan diariamente en todas las bases de datos.

Una vez localizada la tabla en la copia de seguridad, procedí a subirla a la librería MySql del VirtualHost correspondiente mediante Ftp.

En el caso de Centos 6.3 estas librerías se encuentra en la ruta: /var/lib/mysql/ que es donde están todas las bases de datos del servidor MYSQL.

Cada tabla (en Joomla!) se compone de tres archivos con prefijo .frm , MYD MYI , que subiremos a nuestro servidor en la base de datos correspondiente, pongo un ejemplo real:

/var/lib/mysql/zarza/b7w6n_extensions.frm
/var/lib/mysql/zarza/b7w6n_extensions.MYD
/var/lib/mysql/zarza/b7w6n_extensions.MYI

Pero debido a que los hemos subido como propietario root y para que se puedan leer el propietario debe ser mysql debemos, desde una consola para cambiar el propietario, ejecutar los siguientes tres comandos:

# chown -R mysql:mysql /var/lib/mysql/zarza/b7w6n_extensions.frm
# chown -R mysql:mysql /var/lib/mysql/zarza/b7w6n_extensions.MYD
# chown -R mysql:mysql /var/lib/mysql/zarza/b7w6n_extensions.MYI

Los archivos deben tener permisos 660 por lo que a continuación ejecutaremos:

# chmod 660 /var/lib/mysql/zarza/b7w6n_extensions.frm
# chmod 660 /var/lib/mysql/zarza/b7w6n_extensions.MYD
# chmod 660 /var/lib/mysql/zarza/b7w6n_extensions.MYI

Pero a pesar de que todo estaba aparentemente correcto me seguía dando el error: MySQL ha dicho: Documentación #1036 - Table  is read only

La solución es bien sencilla:

# /etc/init.d/mysqld restart

Reiniciar el servidor mysql para que tome las nuevas variables y la tabla pueda volver a escribirse.

Sobre el error 500 que se produce al importar a una base de datos desde PhpMyAdmin escribo otro artículo a continuación (He encontrado una solución para antiguas versiones de Apache mod_security pero no la que yo uso en este momento, la modsecurity-apache_2.7.1).

Otro cambio que habréis notado los pocos lectores, pero fieles, que tengo en este blog es el diseño. Es un nuevo template (meet_gavern de GavickPro y con responsive layout para dispositivos móbiles y tabletas) y también una nueva versión de Joomla!, la 3.0.2, a la que migré manualmente desde la 2.5.8 . Pero esta historia la contaré también a continuación.

Jesus_Caceres