martes, 22 de noviembre de 2011

Centos 5: Migrar MySQL 5.1 de Windows a Linux.

 Hola, me encontre con un problema cuando quise migrar una base de datos corriendo MySQL 5.1.x en Windows XP y la trate de migrar a MySQL 5.1 corriendo Centos 5.7.

 La base de datos que me interesa es tipo InnoDB, entonces la manera tradicional es atraves del comando mysqldump asi:

  mysqldump -f --opt --single-transaction nombre-bd > nombre-bd.sql -u root -h windowsxp-ip -p

  Para regresarla:

  mysql nombre-bd < nombre-bd.sql -p

 Todo esto hecho desde el mismo servidor centos.

  Bien ya tenemos nuestra bd, ahora es cuestion de reconfigurar nuestra app que este caso se ejecuta bajo Windows atraves de un ODBC, hecho lo anterior era cuestion de ejecutar el programa.

   Pero para mi sorpresa no funciono, el programa empezo a marcar errorres, el odbc decia que todo bien, su test sin problemas, que estaba pasando?

  Los logs son benditos, me vi en la necesidad de prender el log mysql, reinicie el servicio y a leer el log.

   Lo que sucedia era que la app mandaba los querys a la base de datos en mayusculas, recordar que Unix/Linux son sensibles a las minusculas/mayusculas, siempre han operado asi.

  Cuando yo corria el mismo query en la consola de mysql el me decia que encontraba la tabla dada, ahi venia el problema, MySQl windows cuando creo la  base de datos la tablas las nombro con Myusculas-Minusculas, cuando mysqldump restaura las tablas en Centos lo hace todo con minusculas ya que asi opera el por default.

 Y esto llevo a que la app tronara, lo que hice fue modificar un parametro general de MySQL en centos este:

lower_case_table_names = 1

Por default es 0, lo que hace este parametro es que cuando compara los nombres no verifica si son mayusculas, minusculas, etc, una reiniciada a el servidor, y listo, la app empezo a funcionar.

El parametro va en: /etc/my.cnf.

Saludos!!!