Exportando de MySQL 4.1 a 4.0

por mmeida el 06/10/2005

en Mangas Verdes

MySQL

Bueno, pues ésta es una de las cositas que he descubierto en el proceso de migración de Proyecto Isla. Ya había realizado alguna que otra migración, y lo cierto es que nunca me había encontrado con algo como esto: al exportar las bases de datos desde Hostgo a phi:hosting, los caracteres de todos los textos perdían el formato. Me refiero, como debes suponer, a acentos, ñ y signos especiales. ¿Qué ocurría? Simple (pero delicado): hostgo trabaja con MySQL 4.1.13, mientras que phi:hosting, por razones de seguridad (consideran que la versión 4.1. es aún inestable en algunos puntos), lo hace aún con MySQL 4.0.25. Es decir, que me encontraba trasladando mis bases de datos desde una versión reciente a otra más antigua, justamente lo contrario de lo que resulta normal: cambiar a una versión más avanzada.

Pues bien, el problema radicaba, fundamentalmente, en que las nuevas versiones de MySQL incorporan un nuevo atributo, Collation, que afecta a la codificación de caracteres y que se integra al final de cada tabla en el proceso de exportación. Al intentar importar en la versión 4.0, lógicamente da un error. Y no se puede importar. Lo grave: Hostgo tenía configurado el servidor en latin1; y phi:hosting en UTF-8.

Esta primera alegría en mi mudanza fue rápidamente resuelta al percatarme de que el menú de exportación de la versión 4.1.13 incorpora la posibilidad de exportar en formato 4.0. Y no me lo pensé dos veces. Exporte. Importé. Y voilá… los caracteres al carajo. ¿Callejón sin salida? Probablemente. Lo único que hace la exportación en formato 4.0 es suprimir la cadena en la que se integra el famoso Collation, pero al mismo tiempo impide que se salven los textos con los caracteres adecuados.

Tras recorrer como un poseso la red en busca de soluciones, llegué al convencimiento de que sólo había tres salidas:

a) Que phi:hosting actualizara de la versión 4.0 a la 4.1

b) Que phi:hosting formateara el servidor en latin1

c) Que Manolito Almeida se buscara la vida.

¿Cuál prosperó? Efectivamente, has acertado: la c). Las dos primeras opciones requerían, respectivamente, que o bien phi:hosting dejara sin servicio durante un buen tiempo a sus usuarios y se arriesgara en una versión en la que no confían, o bien se cargaran el formato de caracteres de todos los sitios alojados en sus máquinas con el único, pero noble fin, de que Proyecto Isla se viese lo bonito que es.

Además de recurrir a los manuales específicos de MySQL y de cuanto a Character Set y Collation encontré en Google, la gente de phi:hosting me recomendó un tópic del foro de WordPress. Lo probé todo, pero nada. Y justo cuando estaba a punto de arrojar la toalla (probablemente para recogerla poco después), se me encendió una lucecita.

Y esto fue lo que hice:

a) Llegué a la conclusión de que la conversión de caracteres se producía en algún punto de la exportación, porque al abrir el archivo .sql, ya aparecían los signos mal dibujados. Es decir, descartaba que tuviera algo que ver con la importación.

b) Observé cómo la conversión de caracteres se producía sólo al exportar a archivo (fichero que te descargas en el ordenador), pero no cuando se exportaba en formato 4.0 a pantalla (se te abre un frame en la pantalla), siempre y cuando tuviera la codificación del ordenador en UTF-8.

c) ¿Y si recurro al viejo copio y pego de toda la vida, copio de la pantalla y pego en un fichero de texto previamente creado? Ahí me habría saltado el mecanismo de configuración de la exportación y, con un poco de suerte, la versión 4.0 lo reconocería al importar. ¿Tan fácil? Hmmm…

d) ¡Dicho y hecho! Un éxito y una alegría que no podría describir, más que nada porque podría volver a saturar el servidor. Y tampoco es plan, oshe.

Seguramente habrá quien piense: “pues vaya tontería”, y quien ya conociera el remedio antes que la enfermedad, pero les puedo asegurar que, si bien la solución ha sido fácil, el camino para llegar hasta ella ha sido complicado y angustioso, entre tanta página suspendida, tanta migración paralizada, y tantas ganas de volver a la Red. Ni siquiera en Hostgo o en phi:hosting sabían darme una solución.

Simplemente lo cuento por si alguien más se ve en la tesitura. La necesidad aviva la imaginación, y la mía andaba ya un tanto desbordada.

  • Bitacoras.com
  • Meneame
  • Twitter
  • Facebook
  • FriendFeed
  • LinkedIn
  • Ping.fm
  • MySpace
  • Wikio
  • Technorati
  • Google Bookmarks
  • Live
  • Netvibes
  • del.icio.us
  • email
  • PDF
  • Print
  • RSS



Quizás también te interese:



MySQL realmente fácil
¿Te acuerdas de PHP Ya, la página en la que podías aprender y practicar con php? Bien, pues Diego,...

Restricciones en MySQL
Me ha dejado un poco fuera de juego este post de Blog Herald en el que se hace eco de las primeras...

Crucemos los dedos
Si estás leyendo este post es que la migración de servidor ha concluido. Espero que éste sea el último...

Kamasutra geek
Bueno, dos posts seguidos con cositas geeks puede ser demasiado, pero así es el azar... y la Red....


{ 6 comentarios }

1 WiZaRd_ 06/10/2005 en 01:51

Al menos tantos esfuerzos sirvieron de algo, Manuel.
A ver si ahora te llega la compensación al trabajo realizado y ya no hay más problemas.

¡Suerte!

2 Marino 06/10/2005 en 01:57

Lo primero, enhorabuena por estar otra vez online :)

Hay otra forma de hacer esas conversiones que he utilizado en algunas ocasiones, cuando los exports de las bases de datos son tan grandes que directamente eliminan algunas soluciones, como la que al final utilizaste (simplemente porque acaba dando un timeout el PHP por mucho que lo subas antes de terminar de mostrarte todo el “dump”).

Este otro truquito consiste en usar iconv en lo siguientes pasos:

- Exportas la base de datos a un fichero de texto SQL
- lanzas iconv instruyendolo con el conjunto de caracteres de entrada, el que quieres de salida, fichero de entrada y fichero de salida.
- Importas el fichero que has conseguido en el paso anterior, ya convertido al “character set” que quieras.

Aunque a estas alturas ya no te sirva, al menos que valga también como otra solución.

3 mmeida 06/10/2005 en 01:58

Gracias, Wizard. Esperemos que así sea. Lo cierto es que noto el blog bastante más ligerito. A ver si al final va a ser el servidor de Hostgo :evil:

Un saludo.

4 mmeida 06/10/2005 en 01:59

Gracias, Marino. La verdad que pinta muy bien. Ya lo sé para la próxima.

Un saludo.

5 Fernando Plaza 06/10/2005 en 18:34

Lo mejor de este tipo de cosas en las que piensas y repiensas tanto buscando una solución es que cuando la encuentras piensas para tus adentros… soy la ostia de listo, acompañado muchas veces de un… ¿y ahora a quien se lo cuento que lo entienda?

6 HighToro 07/10/2005 en 23:51

Ya me he enfrentado en el pasado con mambos de Latin1/UTF8 y sus EseCuEles, alguna vez (para un amigo) llegué a hacer un Replace de chinitos por sus caracteres castellanos :roll: (un horror); te felicito por haberlo logrado.

Los comentarios están cerrados.

Pos anterior:

Siguiente post:


«Piensa como piensan los sabios, mas habla como habla la gente sencilla.» (Aristóteles)
Get Adobe Flash playerPlugin by wpburn.com wordpress themes

Quantcast