Asesor
Asesor Disponible
¡Hola! 👋 ¿Qué servicios estás buscando hoy?
Escribiendo...
Saltar al contenido

Ariapsa - Diseño de páginas web México

Caso: Actualización mysql del 5 al 8 y ahora el Moodle me da este fallo.

Buenos días. Os pido ayuda por favor. Yo no soy informática, pero hice el Moodle de mi academia. En el hosting me han actualizado mysql del 5 al 8 y ahora el Moodle me da este fallo. Alguien me puede decir qué tengo que cambiar y en qué documento?

 

Buenos días. Este problema es muy común al pasar de MySQL 5 a 8, especialmente con plataformas como Moodle.

Voy directo a lo importante:


🔴 Qué está pasando

MySQL 8 cambia varias cosas internas (modo estricto, manejo de índices, codificación, etc.) y versiones antiguas de Moodle no son compatibles.

El error normalmente aparece por:

  • Modo SQL más estricto (STRICT_TRANS_TABLES)

  • Cambios en utf8 vs utf8mb4

  • Índices largos no permitidos igual que antes

  • Funciones o consultas obsoletas


✅ Lo primero que debes verificar

¿Qué versión de Moodle estás usando?

Esto es clave:

  • Moodle 3.9 o superior → compatible con MySQL 8

  • Moodle anterior → fallará


🔧 Soluciones (de más recomendable a parche rápido)

🟢 OPCIÓN 1 (RECOMENDADA): Actualizar Moodle

Si tu Moodle es antiguo:

  1. Haz backup completo (archivos + base de datos)

  2. Actualiza a una versión compatible (idealmente 4.x)

  3. Sigue guía oficial de actualización

👉 Esta es la solución correcta a largo plazo


🟡 OPCIÓN 2: Cambiar configuración de MySQL (rápido)

Si no puedes actualizar aún, pide al hosting o cambia en my.cnf:

sql_mode=NO_ENGINE_SUBSTITUTION

O quitar modos estrictos como:

STRICT_TRANS_TABLES
ONLY_FULL_GROUP_BY

⚠️ Esto “relaja” MySQL 8 para que se comporte más como MySQL 5


🟡 OPCIÓN 3: Revisar codificación (muy común)

Moodle requiere:

  • utf8mb4

  • innodb_large_prefix=ON

Y en algunos casos:

innodb_file_format=Barracuda

🟡 OPCIÓN 4: Cambiar driver en config.php

Revisa tu archivo:

/config.php

Y asegúrate que tienes algo como:

$CFG->dbtype = 'mysqli';

📍 Dónde se cambia esto

Depende del tipo de solución:

Problema Archivo / lugar
Config DB Moodle config.php
Error SQL / compatibilidad versión de Moodle
Config MySQL my.cnf (servidor) o panel hosting
Codificación base de datos (phpMyAdmin)

💡 Recomendación profesional (importante)

No intentes “parchar demasiado” si tu Moodle es viejo.

👉 En entorno productivo:

  • MySQL 8 + Moodle viejo = inestabilidad segura

  • Mejor actualizar Moodle que ajustar MySQL

🔴 Diagnóstico claro

El error clave es este:

You have an error in your SQL syntax near 'groups g, groups_members gm'

👉 El problema es que estás usando una tabla llamada groups, que en MySQL 8 es una palabra reservada.

En versiones antiguas (MySQL 5) esto pasaba desapercibido, pero en MySQL 8 ya rompe las consultas SQL.


⚠️ Por qué ocurre

La consulta que falla es:

SELECT g.id, g.courseid
FROM groups g, groups_members gm
WHERE gm.groupid=g.id AND gm.userid=?

👉 groups ahora entra en conflicto con la sintaxis SQL (por GROUPS, relacionado con GROUP BY).


✅ Soluciones (ordenadas por viabilidad)

🟢 OPCIÓN 1 (LA CORRECTA): Actualizar Moodle

Tu versión de Moodle es antigua.

✔ Moodle moderno ya corrige esto usando comillas:

FROM `groups` g

👉 Solución definitiva:

  • Actualizar mínimo a Moodle 3.9+

  • Ideal: Moodle 4.x


🟡 OPCIÓN 2 (PARCHE RÁPIDO): Forzar compatibilidad en MySQL

Pide a tu hosting o ajusta:

sql_mode=NO_ENGINE_SUBSTITUTION

Y eliminar:

ONLY_FULL_GROUP_BY
STRICT_TRANS_TABLES

⚠️ Esto no siempre soluciona lo de groups, pero puede ayudar con otros errores.


🔴 OPCIÓN 3 (NO RECOMENDADA PERO FUNCIONAL): Modificar código Moodle

Tendrías que editar archivos PHP donde aparece:

FROM groups g

Y cambiarlo a:

FROM `groups` g

📍 Archivos implicados según tu error:

  • /lib/dml/mysqli_native_moodle_database.php

  • /lib/moodlelib.php

⚠️ Problema:

  • Son MUCHAS consultas

  • Se pierde al actualizar

  • Riesgo de romper más cosas


🟣 OPCIÓN 4 (rápida si hosting lo permite): Volver a MySQL 5.7

Si puedes:

👉 Baja la versión de MySQL a 5.7

✔ Es lo más rápido si necesitas que funcione YA


🎯 Recomendación profesional (directa)

Tienes 2 caminos reales:

Escenario Qué hacer
Urgente (que funcione hoy) Bajar MySQL a 5.7
Correcto a futuro Actualizar Moodle

📌 Conclusión técnica

El error NO es de configuración, es de incompatibilidad estructural entre Moodle antiguo y MySQL 8 (palabras reservadas + SQL moderno).

×

Iniciar Sesión

[custom_login_form]
[custom_registration_form]