Hola:
Estoy haciendo una migración de las cursadas y promosiones y al correr el script 06_sga_insc_cursada_instancias, me tira este error:
2016/11/09 13:07:37 - 01_tablas_conversion - ERROR: inserción o actualización en la tabla «sga_insc_cursada_instancias» viola la llave foránea «fk_sga_insc_cursada_instancias_sga_insc_cursada»
Detail: La llave (inscripcion)=(39106) no está presente en la tabla «sga_insc_cursada».
Where: sentencia SQL: «INSERT INTO sga_insc_cursada_instancias (inscripcion,instancia) VALUES(cursor2.inscripcion, 1)»
función PL/pgSQL mig.sga_insc_cursada_instancias() en la línea 54 en sentencia SQL
Entiendo que faltan datos en una tabla, pero no encuentro de donde se carga y porque me esta tirando esto.
¿Que deberia ver? GRacias y saludos
Hola Rodrigo, no falló ningún precontrol del módulo?
Sabés si la inscripción se trata de una inscripción a comisión con acta de cursada abierta o cerrada? o sin acta?
Estás usando los últimos scripts de migración?
Hola Juliana:
Te comento, en los precontroles no salto nada. Por lo que pude deducir son inscripciones con acta cerrada.
Los script que esto usando son de junio del 2016, los últimos que me pasaron, las pruebas que había hecho con estos script funcionaron sin problema, ahora empezó a saltar esto y no logro descubrir de donde viene.
Saludos
Hola Rodrigo!!
Bajate los últimos scripts de migración y probá con esos, que se hicieron varias modificaciones referidas a inscripciones de alumnos en actas abiertas y cerradas.
Los mismos se encuentran en su nodo, versión 3.12.0.
Avisanos si con los nuevos scripts persistieron los errores de claves foráneas.
Saludos!
Juliana:
Sigue con el mismo error. NO ANDA y lo estoy empezando a necesitar algo urgente ya que tengo planificado la migración el lunes si o si, sino no llego.
Saludos
Rodrigo, por favor hace lo siguiente:
1- Baja los ultimos scripts de migracion de la version 3.12.0
2- Volve a probar migrar desde el comienzo el módulo 50_Cursadas_Promociones_Examenes
¿Fuiste haciendo backup luego de migrar cada módulo? Esto es recomendable por estos casos, para poder volver a levantar el backup de la migracion hasta cierto módulo y poder seguir la migracion a partir de alli y no tener que volver a migrar todo desde el comienzo.
Por algun motivo la inscripción a cursada no se insertó en el script anterior “05_sga_insc_cursada.sql”
¿Estos conteos te dan diferente?
A) SELECT count() FROM mig.sga_insc_cursadas;
B)
B.1) SELECT count() FROM sga_insc_cursada;
B.2 ) SELECT filas FROM mig._tablas_g3 where tabla=‘sga_insc_cursada’;
C) SELECT count(*) FROM mig._cnv_pk_insc_cursada;
¿A <> (B1 - B2) ?
Es decir te da que A > (B1 - B2)
Alejandro:
Los backup tardan entre media hora a 45 minutos, ergo no los hago, ni los voy a hacer sino tardaria dias en migrar. No puedo volverlo a correr, me tira que lo corri y se queda ahi.
Saludos
Bueno, es un tema que no puedas hacer backup, ya que es la unica forma de poder volver algun paso y comenzar la migracion desde ahi, salvo que migrar todo desde el comienzo sea mas rapido que hacer backup y recuperar un backup.
Por favor decime que dan los conteos que te escribi en el mensaje anterior.
Lo que podes hacer es borrar las inscripciones a cursadas que se insertaron en el script nro 5, y volver a migrar a partir de alli nuevamente.
Para borrar las inscripciones insertadas, lo que tenes que hacer es correr lo siguiente:
DELETE FROM sga_insc_cursadas WHERE inscripcion IN (SELECT inscripcion FROM mig._cnv_pk_insc_cursada)
Alejandro:
Si se tarda mucho en hacer los backup, tardaria demasiado. Para hacer la migración tengo que usar una maquina virtual y ya intente hacer esto de backapear y fueron dos dias de mirar la pantalla.
Te paso los datos que me dieron con las consultas:
A = 3384
B1 = 37257
B2 = 34150
C = 3384
B1-B2 = 3107
me falta unos 277 inscripciones…
Volvi a correr todo de nuevo, borre las inscripciones, pero salto de nuevo todo, esta con los mismos valores.
Saludos
Alejandro
Arranque de nuevo pero con los ultimos script es peor, no estoy en la version.3.12.0 sino en la 3.11.2 y no es negociable migrar, lo tengo planificado para mas adelante, estan trabajando bastante con esto y no estamos en condiciones de hacerlo. Me tira errores de falta de columnas. Asi que tengo que volver a la los script anteriores.
Saludos
El problema como vimos esta en el script 5. Por algun motivo no esta insertando todas las inscripciones a cursadas.
Ese script tiene join de varias tablas y el problema debe venir por alguno de los joins.
Veamos cuantos registros te da cada una de las siguientes consultas y con que join es que recupera menos inscripciones…:
1)
SELECT COUNT(*) FROM mig.sga_insc_cursadas as sic, mig._cnv_pk_comisiones as cc
WHERE cc.comision_g2 = sic.comision;
SELECT COUNT(*) FROM mig.sga_insc_cursadas as sic, mig._cnv_pk_comisiones as cc , mig._cnv_pk_insc_cursada as cpi
WHERE cc.comision_g2 = sic.comision AND
sic.unidad_academica = cpi.unidad_academica AND
sic.carrera = cpi.carrera AND
sic.legajo = cpi.legajo AND
sic.comision = cpi.comision ;
SELECT COUNT(*) FROM mig.sga_insc_cursadas as sic, mig._cnv_pk_comisiones as cc , mig._cnv_pk_insc_cursada as cpi, mig._cnv_pk_alumnos as cpa
WHERE cc.comision_g2 = sic.comision AND
sic.unidad_academica = cpi.unidad_academica AND
sic.carrera = cpi.carrera AND
sic.legajo = cpi.legajo AND
sic.comision = cpi.comision AND
sic.unidad_academica = cpa.unidad_academica AND
sic.carrera = cpa.carrera AND
sic.legajo = cpa.legajo;
– Esta es la que se utiliza para insertar las inscripciones, se ve que aca es donde solo inserta 3107 inscripciones cuando debiera insertar 3384:
SELECT COUNT(*)
FROM
mig.sga_insc_cursadas as sic,
mig._cnv_pk_comisiones as cc,
mig._cnv_pk_insc_cursada as cpi,
mig._cnv_pk_alumnos as cpa,
mig._cnv_pk_planes_versiones as cppv
WHERE
cc.comision_g2 = sic.comision AND
sic.unidad_academica = cpi.unidad_academica AND
sic.carrera = cpi.carrera AND
sic.legajo = cpi.legajo AND
sic.comision = cpi.comision AND
sic.unidad_academica = cpa.unidad_academica AND
sic.carrera = cpa.carrera AND
sic.legajo = cpa.legajo AND
sic.unidad_academica = cppv.unidad_academica AND
sic.carrera = cppv.carrera AND
sic.plan = cppv.plan_g2 AND
sic.version = cppv.version
Hola Alejandro, primero gracias por la mano. Por lo que veo a partir de la 3ª empiezo a dar el 3107.
Creo que ya descubri que esta pasando.
La cosa es asi. Esta es una base de Esquel y Madryn, en el 2016 yo puse la cohorte de ese año en G3 y les avise que ya empiecen a usarlo, pero se ve que no me entendieron y cargaron a mano esta misma cohorte en el G2, ahora cuando empece la migración me empezo a tirar error que la persona_propuesta ya estaba en la base, asi que los fui borrando de la tabla de alumnos. Pero quedo la inscripción en la comisión de estos alumnos.
Si hago el select de solo los que estan en la tabla de alumnos me tira bien los 3107, asi que ahora deberia borrar los que me sobran y supongo que andaria. Te aviso si surge algo mas.
Saludos
¿Lo que hiciste fue borrar alumnos de la tabla de migracion “mig._cnv_pk_alumnos” ?
El tema es que para esos alumnos que borraste, ya no vas a poder migrar su historia académica ni ningun registro en la base que este relacionada con esos alumnos.
¿Es correcto?
El tema es cuando migres actas de examen/cursada/promocion, si en el acta donde estaban esos alumnos tambien estan otros que si estas migrando… Te van a quedar las actas incompletas, o estas ya estan en G3?
Hicieron doble carga, en G2 y G3 para esos alumnos de la cohorte 2016 de Esquel y Madryn?
Alejandro:
Si los borre, ya que cuando descubri lo que estaban haciendo los pare, asi que solo quedaron algunos anotados en G2 y con las inscripciones a cursadas. No cargaron actas, ya que empiezan a rendir a fin año. Fue un problema de comunicación, ellos creyeron que tenian que hacer doble carga, pero esto era para la gente de naturales. Solo paso con la facultad de humanidades en Esquel, Madryn, cargo la cohorte 2015 y no dio errores.
Gracias y saludos