Comunidad Drupal en español


Cómo migrar Drupal de MySQL 4.0 a MySQL 4.1 o 5.X

By Ariel - Posted on 13 Marzo 2008

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!

Responder

  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <h1> <h2> <h3> <img> <p> <div> <b> <i> <pre> <span> <hr>
  • You may quote other posts using [quote] tags.
  • Textual smileys will be replaced with graphical ones.
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.
  • Saltos automáticos de líneas y de párrafos.

Más información sobre opciones de formato

CAPTCHA
Esta pregunta es para probar si eres un visitante humano y prevenir el envio automático de spam.
Image CAPTCHA
Copy the characters (respecting upper/lower case) from the image.


Inicio de sesión

En línea

En este momento hay 0 usuarios y 13 invitados en línea.