Cómo migrar Drupal de MySQL 4.0 a MySQL 4.1 o 5.X
Mysql 4.0, al menos el que viene con Debian Sarge, no trae soporte para utf8 y Drupal necesita utf8, así que si instalas Drupal terminas almacenando texto codificado en utf8 en una base codificada en latin1 (iso-8859-1). Hasta aquí no hay grandes problemas.
El problema se presenta con la collation, para el que no sepa, la collation sirve para hacer comparaciones de caracteres en una base de datos y cada codificacion tiene su set de collations. Por ejemplo en una búsqueda la collation dirá que e = é. Pero si guardamos texto codificado en utf8 en un motor que esta en latin1, como no esta interpretando bien los caracteres tampoco interpretara bien la collation. Esto hará que el buscador de Drupal indexe palabras iguales como si fueran distintas, por ejemplo "sera" y "será" serán dos palabras distintas y se indexaran dos veces.
Salvando el error del buscador, Drupal funcionara normal, el problema grave viene intentamos migrar a mysql 4.1 o 5.0.
Mysql 4.1 o 5.0 tiene un mejor soporte de codificación.
Cuando en mysql 4.0 hacemos un mysqldump de la base de drupal y luego se lo enviamos a mysql 4.1 o 5.0, este ultimo interpretará que la base esta en latin1 y convertirá todos los caracteres a latin1, destruyendo los caracteres codificados en utf8, como resultado los caracteres especiales (con acentos, etc) se verán horribles.
Aquí te dejo el truco de como hacerlo fácil:
1. Haces un mysqldump de tu base en mysql 4.0
Los motores mysql por defecto están configurados para recibir datos en latin1.
2. En el dump de tu base eliminas el contenido de la tabla search_total, esta es la tabla que contiene la indexacion del buscador de drupal y tendrá entradas duplicadas cuando guardes la base en mysql 4.1 o 5.0 con la codificación y collation correcta, así que debes volver a reindexar el sitio una vez los tengas funcionando.
Si no eliminas el contenido de esta tabla cuando intentes subir la base a mysql 4.1 o 5.0 se abortara por entradas duplicadas.
3. Editas el dump de la base y colocas al principio del archivo:
SET NAMES utf8;Modificas la linea que dice:
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `nombre_base_datos`;Para que quede asi:
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `nombre_base_datos` DEFAULT CHARACTER SET utf8;Con esto le dices al motor que le vas a enviar datos en utf8 y que no tendra que realizar la conversión (y arruinar todo).
4. Le envías la base a mysql 4.1 o 5.0 con el cliente de consola mysql
5. Reindexas el sitio desde la administración de Drupal y listo!
- blog de Ariel
- Responder
- 322 lecturas
- Citar
Hola, en tenido un problema con todo esto y la verdad es que nose solucionar esto que me ha pasado.
He creado las tablas para drupal (que por cierto nose si las habré creado correctamente) y me ha dado fallo cuando he ido a http://localhost/micarpeta_drupal, ya no me salia correctamente el instalador de drupal. Me salia como si estuviera en modo de texto, pero cuando intentaba pasar al siguiente paso pues ya no me dejaba, me sale toda una pagina repleta de errores. Tengo un paquete xampp instalado y no entiendo eso de hacer un 'dump' ni 'reindexar'. Despues de todo esto he borrado la base de datos y me salian muchos mas errores, y ahora nose ni como se crean las tablas porque la primera vez me salio de churro... jeje
Espero que me podais ayudar.
Saludos
No entiendo lo que me dices, pero me parece que tu problema no es con una migracion de mysql 4.0 a 5.x, lo que trata este tema. Si es asi por favor publica tu duda en el foro con mayor precision para que te podamos ayudar.
Un saludo!