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,
More information about this error may be available in the server error log.
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 y 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.