Cosas de Administradores

"Error al leer base de datos"

 
Imagen de Urko H
"Error al leer base de datos"
 

Buenas tardes,

Tratando de realizar una copia de seguridad de un curso, me surge el problema de "Error al leer base de datos".

De momento he realizado la revisión del curso y parece estar todo correcto y he ampliado la RAM de trabajo desde la configuración de Moodle. Os facilito los errores del depurador:

Debug info: MySQL server has gone away
SELECT COUNT(*)
FROM cv_backup_ids_temp b
JOIN cv_user u ON u.id = b.itemid
WHERE b.backupid = ?
AND b.itemname = 'userfinal'
AND u.mnethostid != ?
[array (
0 => 'XxX',
1 => '1',
)]
Error code: dmlreadexception

Stack trace:
  • line 443 of /lib/dml/moodle_database.php: dml_read_exception thrown
  • line 1080 of /lib/dml/mysqli_native_moodle_database.php: call to moodle_database->query_end()
  • line 1478 of /lib/dml/moodle_database.php: call to mysqli_native_moodle_database->get_records_sql()
  • line 1551 of /lib/dml/moodle_database.php: call to moodle_database->get_record_sql()
  • line 1761 of /lib/dml/moodle_database.php: call to moodle_database->get_field_sql()
  • line 471 of /backup/util/dbops/backup_controller_dbops.class.php: call to moodle_database->count_records_sql()
  • line 1662 of /backup/moodle2/backup_stepslib.php: call to backup_controller_dbops::backup_includes_mnet_remote_users()
  • line 88 of /backup/util/plan/backup_structure_step.class.php: call to backup_main_structure_step->define_structure()
  • line 181 of /backup/util/plan/base_task.class.php: call to backup_structure_step->execute()
  • line 177 of /backup/util/plan/base_plan.class.php: call to base_task->execute()
  • line 120 of /backup/util/plan/backup_plan.class.php: call to base_plan->execute()
  • line 320 of /backup/controller/backup_controller.class.php: call to backup_plan->execute()
  • line 136 of /backup/util/ui/backup_ui.class.php: call to backup_controller->execute_plan()
  • line 131 of /backup/backup.php: call to backup_ui->execute()

La única información que he encontrado de momento (https://moodle.org/mod/forum/discuss.php?d=163376) no me sirve, si pudieseis echarme una mano os lo agradecería.


Saludos

 
Promedio de calificaciones: -
Cuetlachcoyotl o Lobo Mexicano
Re: "Error al leer base de datos"
ModeradoresMoodlers de gran ayuda

Hola Urko,

Creo que la cuestión clave aquí es la siguiente línea:

Error code: dmlreadexception

Parece que en el caso específico de Moodle, este error aparece cuando hay algo en el backup que es demasiado grande, desde el punto de vista de MySQL

Entonces, en el archivo de configuración de MySQL (Ej. my.ini), debes incrementar el valor de "max_allowed_packet" a digamos 100M:

max_allowed_packet=100M

Si no te funciona, pónle más (Ej. 250M).

Referencia:

https://docs.moodle.org/35/en/error/moodle/dmlwriteexception

Un saludo

 
Promedio de calificaciones:Útil (2)
Imagen de Urko H
Re: "Error al leer base de datos"
 

Cambio solicitado en el hosting, ya que no tengo acceso a estos ajustes. Próximamente indico resultados.
Gracias!!! gran sonrisa

 
Promedio de calificaciones: -
Imagen de Urko H
Re: "Error al leer base de datos"
 

Buenas David,

¿Hay alguna opción menos intrusiva con el servidor? Alguna forma de aligerar el peso de la BBDD o similar. Estoy tratando de hacer el backup del curso para duplicarlo modificando ciertas opciones y así mantener congelado el actual. ¿Alguna forma de duplicarlo sin alumnos ni mensajes sin tener que 'reiniciarlo' antes del backup?

En estos momentos tenemos el Moodle en un hosting compartido y nos indican que no es posible modificar esta configuración ya que afectaría a todo el servidor.

Saludos

 
Promedio de calificaciones: -
Imagen de Urko H
Re: "Error al leer base de datos"
 

Me auto-respondo, siguiendo los siguientes pasos, SOLVENTADO:

  1. Crear el nuevo curso y meterlo en la misma categoría del curso que queremos copiar.
  2. En el menú lateral izquierdo de ADMINISTRACIÓN del nuevo curso, en “Administración del curso”, vamos a la opción “Importar”.
  3. Elegimos el curso que queramos copiar y pulsamos “Continuar”.
  4. Podemos seleccionar qué es lo que queremos copiar. En principio todo menos el calendario ya que si cambiamos de año, no tiene sentido copiar los eventos.
  5. Pasamos a una sección donde nos aparecen todos los recursos del curso origen. Aparecen seleccionados todos por defecto, pero podemos quitar los que queramos.
  6. La siguiente pantalla muestra un resumen de los recursos a importar, para que se confirme. Damos al botón “Realizar la importación”, dejamos al sistema que haga la copia (o importación) y ¡listo!
NOTA: El curso no tendrá usuarios, habrá que añadir profesores y alumnos.

Gracias por la ayuda

 
Promedio de calificaciones:Útil (1)
Cuetlachcoyotl o Lobo Mexicano
Re: "Error al leer base de datos"
ModeradoresMoodlers de gran ayuda

Hola Urko,

Yo creo que aquí hay dos éxitos.

El primero, que solucionaste el inconveniente que tenías.

Y el segundo que compartiste la solución. Sí

Una variante a esta última, es crear el backup, pero sin seleccionar el recurso o actividad que consideremos "pesado".

Por ejemplo un SCORM.

Entonces, habría que crear el backup sin el SCORM (o cualquier otro elemento "pesado"), y restaurarlo en donde sea pertinente (Ej. en un nuevo curso).

Luego de ello, se podría hacer lo que dices de importar el elemento "pesado", o bien, éste se podría crear de nuevo (no es lo mismo retrabajar un poco, creando un recurso o actividad, que haciendo lo propio con todo el curso).

Nuevamente, gracias por compartir tu experiencia con la comunidad.

Saludos,

 
Promedio de calificaciones: -