Cuando se instala una aplicación, esta selecciona el juego de caracteres que más le conviene por el tipo de datos que serán almacenados en la base de datos, no obstante según progresa el desarrollo, mejoran las implementaciones, actualizaciones y cambios similares, una aplicación puede requerir al administrador, cambiar su juego de caracteres por uno diferente.
Esto sucede en Moodle 3.3 el cual requiere de utf8mb4.
Estos cambios se pueden realizar por medio de consultas SQL que alteren las tablas y columnas, no obstante esto puede llegar a ser una tarea realmente tediosa si se tienen muchas tablas.
Por ello bajo nuestra experiencia la forma más rápida suele ser descargar una copia .sql, hacer las modificaciones en el fichero e importar de nuevo la base de datos con los cambios.
Si tienes experiencia usando la terminal la forma más sencilla es utilizar mysqldump
, de esa forma podrás generar una copia de seguridad al vuelo sin necesidad de descarga:
mysqldump -uUSUARIO_MYSQL -pPASSWORD BASE_DE_DATOS > nombre-fichero.sql
En caso contrario puedes descargar la copia desde Copias de seguridad, Descargar una copia de seguridad de la base de datos MySQL.
Si realizaste el backup vía SSH, lo más sencillo es usar el comando sed
para hacer el reemplazo del juego de caracteres antiguo por el nuevo, para este ejemplo, utf8 por utf8mb4, para ello ejecutamos:
sed -i 's/COLLATE utf8_/COLLATE utf8mb4_/g' FICHERO.sql sed -i 's/character_set_client = utf8/character_set_client = utf8mb4/g' FICHERO.sql sed -i 's/SET NAMES utf8/SET NAMES utf8mb4/g' FICHERO.sql
Este comando hará el reemplazo de todas las coincidencias.
Si has descargado la copia en tu equipo, deberás abrir el fichero con un editor de código tipo Sublime Text o Visual Studio, y usando la opción de búsqueda y reemplazo, hacer los siguientes cambios
Finalmente deberás eliminar todas las tablas de la base de datos en uso, lo puedes hacer desde phpMyAdmin y tras esto importar el fichero .sql modificado.
Para este fin podrás usar de igual forma phpMyAdmin si descargarte el .sql en tu equipo, o vía mysql si estás en la terminal:
mysql -uUSUARIO_MYSQL -pPASSWORD NOMBRE_BASE_DATOS < FICHERO.sql
Recuerda que si tienes dudas o no estás seguro del procedimiento indicado, siempre puedes contactarnos y nosotros nos encargaremos de todo el proceso.