Skip to main content

Cambiando el set de caracteres de una base de datos Mysql 5

Hoy por fín me decidí a actualizar la versión de Moodle que uso para dictar un curso en Uniboyaca.  

Le había estado sacando el cuerpo porque para poder actualizarla es necesario cambiar la codificación de la basede datos de latin1 a UTF-8.    Desde hace ya un tiempo Moodle en sus versiones recientes obliga a tener la base de datos en formato UTF-8 por lo que es requerido hacer el cambio.   

A continuación van los pasos necesarios para hacer este cambio (en un equipo Linux):

Primero, como todo buen migrador, saquele un backup a la base de datos Mysql teniendo cuidado en darle el set de caracteres actual:

> mysqldump -p --default_character-set=latin1 -u NOMBREUSER --skip-set-charset NOMBREBD > backup_NOMBREBD_latin1.sql


Bueno, ahora hay que sacarle una copia a dicho archivo.  Para  no confundirse identificar el nombre del archivo con el correspondiente set de caracteres:

> cp backup_NOMBREBD_latin1.sql backup_NOMBREBD_UTF8.sql

El archivo generado es un archivo texto que contiene las definiciones de los elementos de la base de datos y por ende la definicion del set de caracteres.  Abra el archivo con identificación UTF-8 y haga el siguiente reemplazo en todo el archivo, luego salvelo.   Yo uso vi por lo que la sentencia es:

: 1,$ s/latin1/utf-8/g

Luego hay que hacer la conversión de caracteres correspondiente en el archivo.  Para esto usé la utilidad iconv que viene en Linux usando el siguiente comando:

> iconv -f latin1 -t utf-8 backup_NOMBREBD_UTF8.sql > backup_NOMBREBD_UTF8.sql_LISTO.sql

Esta utilidad genera un nuevo archivo que está listo para crear la base de datos de nuevo.

Si señor, hay que borrar la base de datos... pero cero stress porque tenemos dos backups que podríamos usar en caso de ser necesario (backup_NOMBREBD_latin1.sql en formato latin1 y backup_NOMBREBD_UTF8.sql_LISTO.sql en formato utf-8).

Para borrar la base de datos (ya conectado a mysql):

# DROP DATABASE NOMBREBD;

Entonces, se crea la base de datos con la definición del set de carateres correcto UTF-8, es decir:

# CREATE DATABASE NOMBREBD CHARACTER SET utf8 COLLATE utf8_bin;

Una vez creada la base de datos, ahora si restauramos el backup que generamos con las modificaciones ya indicadas:

> mysql -u USERBD -p --default-character-set=utf8 --max_allowed_packet=64M NOMBREBD < backup_NOMBREBD_UTF8.sql_LISTO.sql

Y listo, ya quedó la base de datos creada en el set de caracteres que se requiere para empezar la actualización de Moodle... 

Es decir ya me gaste un poco de tiempo investigando como se hace la conversión y mi tarea principal aún no comienza...haha.   Espero este registro les ahoree tiempo.

Fore,

Comments

Popular posts from this blog

Donde cambiar muchas monedas? después de haber roto la alcancia...

Luego de haber roto el marrano lleno de monedas que le regalaron a mi hijo (Esteban) y unir otras mas ahorradas por espacio de 1 año, nos dimos a la tarea de clasificarlas y organizarlas en paquetes pequeños por denominación para poderlas cambiar a billetes.   


Lo que hice para esta tarea (tieniendo en cuenta que NO las iba a contar todas) fue armar un pequeño tubo donde encajaran las monedas de la misma denominación, contar el número de monedas que sumaran cantidades cerradas (por ejemplo 10.000 o 25.000), marcaren el tubo el espacio ocupado por las monedas y empacarlas en las bolsas individuales.



Realizada esta tarea surgio la pregunta natural: Y bueno ahora donde cambio este montón de monedas? Para responder la pregunta empece a averiguar.  La primera idea que tuve (y creo que la mas inmediata) es pues ir a un banco y que las cambien... fácil!!!.  



Las averiguaciones que hicimos nos indicaron que muy pocos bancos comerciales las cambian. Los pocos que lo hacen destinan solo ciertas s…

Galaxy Tab 10.1 logo infinite loop. Como solucionarlo

Una noche de estas se me quedo prendida mi Samsung Galaxy Tab 10.1 hasta que se descargó por completo la bateria. Al parecer al quedarse sin bateria la tablet corrompe algunos archivos necesarios para el boot y se queda en un estado que varios llaman "logo infinite loop", que simplemente es la repetición infinita del logo de Samsung al  prenderla de tal manera que la tablet nunca incia el sistema operacional. Mala cosa... Lo bueno es que no fuí ni el primero ni el único al que le pasó esta situación. 
Usando Google para indagar sobre el problema encontré que la única forma de resolverlo es realizar un "Factory Reset". Este Factory Reset no es tan sencillo como puede ser en otras circustancias en la que presionando los botones indicados aparece un menú donde la opción "Wipe data/factory reset" puede ser seleccionada y listo.
Lo primero que tengo que decir es que me basé en el siguiente post que fue de mucha ayuda para solucionar el problema... http:/…

Receta para preparar Sangría

Desde hace varios días tenía la tarea de escribir la receta para preparar sangría.   Luego de postergarla y postergarla por fin la tenemos publicada.

Ingredientes (para 8 personas, si se tienen más personas, doble las cantidades de licor y soda.  La cantidad de fruta siempre será al gusto):
2 botellas de 750 ml de Vino tinto Cabernet Sauvignon (seco).1 copa y media de Triplesec.1 copa de Licor Brandy o Cointreau (personalmente prefiero este último).1 lata mediana de duraznos en almíbar.2 manzanas rojas.12 uvas. 1 botella de 1.5 litros de soda (Bretaña o similar, importante que sea sin sabor).2 naranjas Tangelo.2 limones.
Lo primero es cortar en trozos muy pequeños las 2 manzanas y las 12 uvas (no olvide retirar las semillas de las manzanas y de las uvas).   Tome la mitad de los duraznos y córtelos en trozos (el tamaño es al gusto, yo prefiero que sean pequeños.  Adicionalmente Conserve el almíbar pues se usará más adelante).

Use una de las naranjas y exprimala conservando el jugo.  Lu…