Actualizacion 1.5.4+ a 1.6.4+ un poco extraña

Actualizacion 1.5.4+ a 1.6.4+ un poco extraña

de Joan Vicent Navarro Ferreres -
Número de respuestas: 5
Hola a todos !!

Estoy actualizando una 1.5.4+ a 1.6.4+. La actualización que he hecho no es del todo estandar y quisiera preguntaros si puedo tener algun problema en un futuro.
El moodle usa el mysql como gestor de base de datos, su base de datos ocupa 3 GB, mi problema estaba que tardaba mucho en hacer la actualización, unas 5 horas en la primera parte de la actualización ( modificación de la base de datos, creación de nuevas tablas ... ) y entre 6 y 10 horas en convertirla a UTF8.

Bueno, para evitar esta demora, he hecho lo siguiente:
1. Crear la base de datos con la codificación UTF-8
2. Volcar la base de datos de la 1.5.4+ en latin1 o ISO-8859-1 en su interior.
3. Proceder con la primera parte de la actualización ( unas 5 horas )
4. Cuando he acabado, no tenia en el módulo de administración el acceso al script de migración a UTF-8, se veia el area de contenido de un curso en la codificación ISO-8859-1 ( o sea caracteres raros ), pero los recursos en principio se ven perfectamente en UTF-8.
5. He solucionado el problema del area de contenidos, vaciando todos los campos modinfo de todos los cursos y se ha rehecho con la codicació correcta.
6. El estado de la base de datos es que tiene tablas con codifición ISO-8859-1 y tablas en UTF-8

Mi pregunta, despues de este rollo, esta en, puedo tener problemas al tener tablas en dos codificaciones diferentes para trabajar con ella en un uso normal o cuando actualice a la 1.7 ? Un solución que he pensado es en cambiar la codificacion de todas las tablas en ISO-8859-1 a UTF-8 con un ALTER TABLE, incluso los campos de todas estas tablas.
Puede provocar problemas con los contenidos de estas tablas al cambiar la codificacion ?

Joan Vicent Navarro Ferreres
Universitat Rovira i Virgili
Servei de Recursos Educatius
Ctra. de Valls, s/n.
43007 Tarragona
977 558252
Promedio de valoraciones: -
En respuesta a Joan Vicent Navarro Ferreres

Re: Actualizacion 1.5.4+ a 1.6.4+ un poco extraña

de Martín Langhoff -

Hola Joan -

para sitios grandes donde sabes que has usado un codepage en particular, lo que yo personalmente recomiendo es

  • Dump out original DB: mysqldump mydb.sql

  • Convert character encoding iconv -f yourcodepage -t UTF8 mydb.sql > mydbunicode.sql

  • If you are having problems with smart quotes and funny stuff coming from Windows users, try the Windows codepage iconv -f CP1252 -t UTF8 mydb.sql > mydbunicode.sql

  • or try the -c parameter to iconv guiño

  • Replace all the table definitions in the SQL file to say utf-8, and also there should be a SET NAMES line early in the file that must say UTF-8.

  • Import the transcoded SQL into a new, UTF8, database.

  • Set this so that Moodle realises the DB doesn't need migrating. UPDATE mdl_config SET value='1' WHERE name='unicodedb'"

  • Almost done now...

  • Change config.php to use newdb

  • log in as admin to Moodle, hit the /admin page

  • Run rebuild.php - which looks like:

       
       require_once 'config.php';
       require_once 'course/lib.php';
       rebuild_course_cache();
       

Esta es la tecnica que usamos nosotros con bases de datos grandes en Postgres. La adapte "al vuelo" para MySQL, pero queda en tus manos entender la documentacion de mysqldump mysqlrestore y iconv porque estoy mas que seguro que al "plan" le faltan algunos parametros aqui y alla guiño

Si funciona, les pagas unas cervezas a un tio que se llama Luke Hudson, que se ha quemado las pestanhas para resolver todo esto.

Abrazos!

En respuesta a Martín Langhoff

Re: Actualizacion 1.5.4+ a 1.6.4+ un poco extraña

de Eloy Lafuente (stronk7) -
Imagen de Desarrolladores Imagen de Desarrolladores de plugins Imagen de Documentadores Imagen de Moderadores Imagen de Moodle HQ Imagen de Moodlers de gran ayuda Imagen de Testers
Sip,

lo que comenta Martín es perfecto si estás 100% seguro que solo has utilizado un encoding en tu sitio.

Una pequeña puntualización sobre lo anterior es que el proceso dump->iconv->import es que el proceso hay que realizarlo después de haber realizado la actualización de 1.5.x a 1.6.x, ergo los pasos quedan:

1) Actualización 1.5 -> 1.6
2) dump -> iconv -> import (importante que la BD de destino sea UTF-8!!!!)
3) config, rebuild cache... y a jugar con TODO en UTF-8 (no es buena idea dejar partes en latin1 y partes en utf-8.

Ciao sonrisa
En respuesta a Eloy Lafuente (stronk7)

Re: Actualizacion 1.5.4+ a 1.6.4+ un poco extraña

de Joan Vicent Navarro Ferreres -
perfecto, pq al hacerlo antes tenia problemas con la tabla config_plugins, ya que me daba un mensaje de que no podia crear los indices por ser mas grandes de 1000 bytes ( lo solucione, podiendo la definicion de la tabla del moodle 1.6.4+ ).

Hare una prueba con tus indicaciones ( tardaré horrores, que la base de datos es monstruosa de grande).

Os informaré
En respuesta a Martín Langhoff

Re: Actualizacion 1.5.4+ a 1.6.4+ un poco extraña

de Wen Hao Chuang -
Hola everyone:

We tried to use the approach Martin L suggested but our mysql dump file was too large and iconv can't handle that large of a file. Any suggestion? thanks!