Hola, al final de toda la narración dejo 2 preguntas, por favor si me pueden dar una respuesta.
Utilizo Máquinas virtuales (VM) en ProxMox para nuestro servidor Moodle, al finalizar cada año genero un clon de la VM para conservarla como historial de Moodle. Esto permite acceder a los alumnos a sus datos de años anteriores. Paralelamente, preparo la VM de Moodle en producción para el nuevo año lectivo, pero este año por razones de seguridad se decidió no utilizar la VM del Moodle que se usó todo el año 2024, se ha decidido utilizar una VM de Moodle que se usó en el año 2023 o sea traer la VM 2023 y dejarla limpia borrando todo su contenido para uso de este año 2025.
Verifique que Guaraní este correctamente vinculado (Administrar Configuración del Sistema) y está todo ok.
Estando en Guaraní, en administrar comisiones elijo una para ir a la solapa Moodle y crear un curso… es acá donde se presentó un problema que parece estar relacionado con una inconsistencia en la comunicación entre Guaraní y Moodle, específicamente es al registrar en la Base de Datos de Guaraní el curso creado en Moodle. El cartel que se presenta dice lo siguiente: “Fallo la creación del curso en Moodle (Mensaje Moodle:)”
He investigado el error por medio del log de Guaraní y voy a intentar mostrar mi análisis del error y la posible solución que encontré… la describo por medio de 3 pasos:
PRIMER PASO:
Les muestro el logs con el error en Guaraní:
========== [ERROR][guarani] SQLSTATE[23505]: Unique violation: 7 ERROR: llave duplicada viola restricci▒n de unicidad ▒idu_int_pv_cursos_plataforma_curso_externo▒ DETAIL: Ya existe la llave (plataforma, id_curso_externo)=(1, 1205). [ERROR][guarani] Error insertando Tabla int_pv_cursos. Ya existe una Tabla int_pv_cursos con los mismos valores en: el Campo id_curso_externo y el Campo plataforma.
Mi interpretación “Llave duplicada viola restricción de unicidad”, indica que Guaraní está intentando insertar un registro en la tabla “int_pv_cursos”, pero ya existe un registro con los mismos valores en los campos “id_curso_externo” y “plataforma”.
Entré a la base de datos en PostgreSQL y veo que sí, (plataforma, id_curso_externo)=(1, 1205) ya existe un registro almacenado con el valor 1205 para este curso que se intenta crear.
Importante, pude confirmar que durante este mismo evento, el servidor Moodle recibió la petición de Guaraní y creó el curso correctamente.
Conclusión:
a) Entonces Moodle logra crear el curso sin problemas.
b) Sin embargo, Guaraní no actualiza su base de datos para reflejar que el curso fue creado, porque falló al intentar registrar los datos debido a la restricción de unicidad.
c) Como Guaraní no reconoce el curso creado, sigue mostrando la opción de “Crear” o “Vincular” lo que genera que esa comisión o materia en Guaraní quede sin vincular con un curso en Moodle.
SEGUNDO PASO:
Como Guaraní incrementa el valor para el campo “id_curso_externo” para cada intento de creación de curso y si ese valor ya existe en la tabla y coincide con plataforma = 1, genera el error de duplicado.
TERCER PASO:
Entiendo que el próximo número para el campo “id_curso_externo” que pasaría Guaraní para crear un nuevo curso tendría el valor de “1206” por eso eliminé de la tabla “int_pv_cursos” el registro que contiene el campo (id_curso_externo = 1206), luego volví a la interfaz de Guaraní a la comisión elegida, dentro de la solapa Moodle presione el botón Crear y el error NO se presentó y permitió que el proceso termine correctamente y que en la comisión de Guaraní se haya vinculado correctamente con el curso creado en Moodle, por supuesto verifique que en Moodle se haya creado el curso y el docente haya sido sincronizado correctamente.
Como dije al principio de esta narración, todo lo explicado es para formular las siguientes dos preguntas:
¿puedo vaciar la tabla “int_pv_cursos”?
(limpiándola solucioné el problema entre Guaraní y Moodle)
¿es mejor colocar en algún lugar de guaraní un número mayor al que existe en el campo “id_curso_externo” para que el próximo que genere Guaraní no exista en la tabla?
Gracias por la atención y quedo en espera de alguna respuesta!

