Ahora que la versión 5 de MySQL lleva ya un tiempo rulando, parece que va siendo hora de actualizarse, y con el tiempo, aprovechar las nuevas funcionalidades que hacen de esta versión una BD "de verdad", como procedimientos almacenados, y esas cosas.
Antes de meternos al cambio en nuestro servidor preferido (el de nuestro principal cliente, que como ya hemos comentado alguna vez, usa una peculiar combinación de Windows, Apache, MySQL y ColdFusion), he hecho la prueba primero en local, ya que mi ordenador tiene exactamente la misma configuraión, y ha ido como la seda, excepto par de pequeños detalles....
El procedimiento a seguir ha sido el siguiente, basado en las
indicaciones de la web de MySQL:
* bajar la nueva versión de
MySQL.com. Bajé la 5.0 Community Edition x86, la de 36.7 Mb
* parar el servidor con un
NET STOP MySQL
, y borrar el servicio con un
bin\mysqld --remove
* ejecutar el instalador de la versión descargada. MySQL recomienda "pisar" la anterior instalación, pero por si acaso, lo he instalado en su carpetita propia, sin tocar la anterior.
* copiar el directorio
data
completo desde la carpeta de la versión 4 a la del 5.
* trastear con el
win.ini
para ajustar un fisco la configuración.
* ejecutar un
mysqlcheck --check-upgrade --all-databases --auto-repair
* iniciar el servicio de MySQL desde el panel de control.
La verdad es que mi sorpresa fue bastante grande al abrir una web y comprobar que la cosa paracía que funcionaba... Pero no del todo.
Al abrir el administrador de MySQL e intentar ver los permisos de los usuarios, aparece un error indicando que no encuentra una columna. Y es que la versión 5 añade algunos cambios en las tablas de usuarios, por lo que hay que correr el script
mysql_fix_privilege_tables.sql
para resolver este asuntillo.
Errrr... ¿y donde está el script? Pues según la documentación, en el directorio
scripts
de la instalación. Errr.... ese directorio no existe.... :|
Media hora y mucho gogglear después, se me ocurre bajarme la versión 5 de MySQL sin el instalador, a ver si hay suerte. Y la hubo. Ahí si que está el directorio scripts, con el script este en cuestión. Copiado a la carpeta de MySQL 5, ejecutado, ignoradas las advertencias y errores, como dice la documentación, reiniciado MySQL, y voilá! Ya puedo ver y editar la configuración de usuarios....
Todavía no lo he probado a fondo, ni he empezado a usar procedimientos almacenados, que es lo que más me interesa, pero en una primera apreciación, parece que todo funciona perfectamente, sin ni siquiera tener que haber actualizado el conector Java para usar las bases de datos con CF, que era algo que me estaba temiendo. También es cierto que todas nuestras bases de datos son MyISAM, no InnoDB. No estoy muy seguro de que con InnoDB se pueda hacer eso de copiar a lo bruto el directorio. En ese caso, supongo que bastaría con hacer un backup previo a la actualización, y restaurar la BD antes de pasar el mysqlcheck.
Bueno, ya les contaré que tal va la cosa...
Addenda 11/7: después de pasar a la versión 5, el MySQL Query Browser me da un error de fallo de memoria. No sé si el error está relacionado con la actualización, ya que antes también ocurría de cuando en cuando. En todo caso, he actualizado el MySQL Query Browser de la versión 1.1.16 a la 1.1.20, y ahora parece ir bien. Y además, cuando una instrucción no devuelve nada (por ejemplo, un delete o un update), por lo menos indica cuantas filas se han cambiado, lo que es más informativo que el 'query return no resultset' de la versión 1.1.16
Addenda 12/7: confirmado: el 'copia pega' de tablas no funciona con InnoDb ;) Hay que recurrir al práctico y fiable backup y posterior restore.