Error Migracion Historia academica

Hola:
Estoy en el script de migracion de historia académica y me tira este error:

2015/11/30 13:06:24 - 01_tablas_conversion - ERROR (version 5.0.1-stable, build 1 from 2013-11-15_16-08-58 by buildguy) : Ocurrió un error al ejecutar esta entrada de trabajo:
2015/11/30 13:06:24 - 01_tablas_conversion - Couldn’t execute SQL: SELECT * FROM mig.get_script_corrido( 4,‘HISTORIA ACADEMICA’) ;
2015/11/30 13:06:24 - 01_tablas_conversion -
2015/11/30 13:06:24 - 01_tablas_conversion - SET search_path = negocio;
2015/11/30 13:06:24 - 01_tablas_conversion -
2015/11/30 13:06:24 - 01_tablas_conversion - INSERT INTO sga_regularidades_venc(
2015/11/30 13:06:24 - 01_tablas_conversion - fecha_alta,
2015/11/30 13:06:24 - 01_tablas_conversion - id_acta,
2015/11/30 13:06:24 - 01_tablas_conversion - alumno,
2015/11/30 13:06:24 - 01_tablas_conversion - equivalencia,
2015/11/30 13:06:24 - 01_tablas_conversion - documento,
2015/11/30 13:06:24 - 01_tablas_conversion - fecha_vigencia_anterior,
2015/11/30 13:06:24 - 01_tablas_conversion - fecha_vigencia_nuevo)
2015/11/30 13:06:24 - 01_tablas_conversion -
2015/11/30 13:06:24 - 01_tablas_conversion - SELECT
2015/11/30 13:06:24 - 01_tablas_conversion - reg.fecha_alta,
2015/11/30 13:06:24 - 01_tablas_conversion - cast(NULL AS integer),
2015/11/30 13:06:24 - 01_tablas_conversion - alu.alumno,
2015/11/30 13:06:24 - 01_tablas_conversion - cnveq.equivalencia,
2015/11/30 13:06:24 - 01_tablas_conversion - mcpd.documento,
2015/11/30 13:06:24 - 01_tablas_conversion - reg.f_venc_reg_ant,
2015/11/30 13:06:24 - 01_tablas_conversion - reg.f_prorroga_hasta
2015/11/30 13:06:24 - 01_tablas_conversion -
2015/11/30 13:06:24 - 01_tablas_conversion - FROM mig.sga_prorrogas_regu as reg
2015/11/30 13:06:24 - 01_tablas_conversion - LEFT JOIN mig._cnv_pk_documentos mcpd ON (mcpd.resolucion = reg.resolucion AND mcpd.tabla = ‘sga_resoluciones’)
2015/11/30 13:06:24 - 01_tablas_conversion - LEFT JOIN mig._cnv_pk_alumnos as alu ON (reg.unidad_academica = alu.unidad_academica AND reg.carrera = alu.carrera AND reg.legajo = alu.legajo),
2015/11/30 13:06:24 - 01_tablas_conversion - mig._cnv_pk_equiv_otorgada as cnveq
2015/11/30 13:06:24 - 01_tablas_conversion -
2015/11/30 13:06:24 - 01_tablas_conversion - WHERE reg.tipo = ‘C’ AND reg.equivalencia IS NOT NULL
2015/11/30 13:06:24 - 01_tablas_conversion - AND cnveq.equivalencia_g2 = reg.equivalencia;
2015/11/30 13:06:24 - 01_tablas_conversion -
2015/11/30 13:06:24 - 01_tablas_conversion -
2015/11/30 13:06:24 - 01_tablas_conversion - INSERT INTO sga_regularidades_venc (
2015/11/30 13:06:24 - 01_tablas_conversion - fecha_alta,
2015/11/30 13:06:24 - 01_tablas_conversion - id_acta,
2015/11/30 13:06:24 - 01_tablas_conversion - alumno,
2015/11/30 13:06:24 - 01_tablas_conversion - equivalencia,
2015/11/30 13:06:24 - 01_tablas_conversion - documento,
2015/11/30 13:06:24 - 01_tablas_conversion - fecha_vigencia_anterior,
2015/11/30 13:06:24 - 01_tablas_conversion - fecha_vigencia_nuevo)
2015/11/30 13:06:24 - 01_tablas_conversion -
2015/11/30 13:06:24 - 01_tablas_conversion - SELECT
2015/11/30 13:06:24 - 01_tablas_conversion - reg.fecha_alta,
2015/11/30 13:06:24 - 01_tablas_conversion - act.id_acta,
2015/11/30 13:06:24 - 01_tablas_conversion - alu.alumno,
2015/11/30 13:06:24 - 01_tablas_conversion - cast(NULL as integer),
2015/11/30 13:06:24 - 01_tablas_conversion - mcpd.documento,
2015/11/30 13:06:24 - 01_tablas_conversion - reg.f_venc_reg_ant,
2015/11/30 13:06:24 - 01_tablas_conversion - reg.f_prorroga_hasta
2015/11/30 13:06:24 - 01_tablas_conversion - FROM
2015/11/30 13:06:24 - 01_tablas_conversion - mig.sga_prorrogas_regu as reg
2015/11/30 13:06:24 - 01_tablas_conversion - LEFT JOIN mig._cnv_pk_documentos mcpd ON (mcpd.resolucion = reg.resolucion AND mcpd.tabla = ‘sga_resoluciones’)
2015/11/30 13:06:24 - 01_tablas_conversion - LEFT JOIN mig._cnv_pk_alumnos as alu ON (reg.unidad_academica = alu.unidad_academica AND reg.carrera = alu.carrera AND reg.legajo = alu.legajo),
2015/11/30 13:06:24 - 01_tablas_conversion - mig._cnv_pk_actas as act
2015/11/30 13:06:24 - 01_tablas_conversion -
2015/11/30 13:06:24 - 01_tablas_conversion - WHERE reg.tipo = ‘C’ AND reg.acta IS NOT NULL
2015/11/30 13:06:24 - 01_tablas_conversion - AND reg.unidad_academica = act.unidad_academica
2015/11/30 13:06:24 - 01_tablas_conversion - AND reg.acta::varchar = act.acta
2015/11/30 13:06:24 - 01_tablas_conversion - AND act.tabla = ‘sga_actas_cursado’;
2015/11/30 13:06:24 - 01_tablas_conversion -
2015/11/30 13:06:24 - 01_tablas_conversion -
2015/11/30 13:06:24 - 01_tablas_conversion - SELECT setval(‘sga_regularidades_venc_seq’,(SELECT MAX(vencimiento) FROM sga_regularidades_venc));
2015/11/30 13:06:24 - 01_tablas_conversion -
2015/11/30 13:06:24 - 01_tablas_conversion - INSERT INTO mig._app_migracion ( modulo, fecha_generacion, fecha_actualiz, script_corrido )
2015/11/30 13:06:24 - 01_tablas_conversion - VALUES (‘HISTORIA ACADEMICA’ , CURRENT_DATE, CURRENT_TIMESTAMP,4 );
2015/11/30 13:06:24 - 01_tablas_conversion -
2015/11/30 13:06:24 - 01_tablas_conversion - ERROR: inserción o actualización en la tabla «sga_regularidades_venc» viola la llave foránea «fk_sga_regularidades_venc_sga_actas_detalle»
Detail: La llave (id_acta, alumno)=(18250, 5859) no está presente en la tabla «sga_actas_detalle».

Que es lo que tengo que ver?
Saludos

Hola Rodrigo!
El error es un error de clave foránea. Se está violando la FK fk_sga_regularidades_venc_sga_actas_detalle, ya que se está intentando hacer insert en la tabla sga_regularidades_venc de un id de acta que no se
encuentra en la tabla sga_actas_detalle. Como dice el detalle del error: La llave (id_acta, alumno)=(18250, 5859) no está presente en la tabla «sga_actas_detalle».

Migraron el módulo de actas? que scripts están usando?

Juliana:
Ya se como leer esto, lo que no termino de descubrir es de donde saca los datos en G2. Cual es la logica de pedir un acta por una prorroga de regularidad, esto es lo que no entiendo, ni en que tablas ver. Se que es una clave foranea y si efectivamente esa combinación no esta en G3 en la tabla que me dice. Pero de donde arma el resto?
Saludos

El modulo de actas fue migrado y no tiro error. Te paso los postcontroles para que lo chequees.
No entendemos que paso.


Pos_Controles_Actas.rar (1.38 KB)

Rodrigo, por un lado deberias ver a que acta de regularidades pertenece el acta 18250

select nro_acta, * from sga_actas where id_acta = 18250; 

Donde nro_acta es el acta de cursadas de Guarani 2.

Luego buscar ese alumno y ver a que alumno corresponde

select unidad_academica, carrera, legajo from mig._cnv_pk_alumnos where alumno = 5859;

Con estos datos ver si en el acta de cursadas de Guarani 2 existe ese alumno, que por el error que te da pareciera que no existe en ese acta de cursadas (si se otorgó una prorroga en el vencimiento de la regularidad, el alumno debiera existir):

SELECT * FROM mig.sga_det_acta_curs WHERE unidad_academica = .. AND carrera = ... AND legajo = .... AND acta = ....;

En el caso de no existir se debera verificar si el problema es que falta el alumno en el acta o que esta mal ese registro de prorroga de regularidad…

Fijate si esta consulta te devuelve ese registro u otros:

select unidad_academica, carrera, legajo, acta from mig.sga_prorrogas_regu where tipo = 'C'
except
select unidad_academica, carrera, legajo, acta from mig.sga_det_acta_curs


Ademas veo que hay un error en el script, donde dice:
WHERE reg.tipo = ‘C’ – Equivalencia de Regularidad
Debe decir:
WHERE reg.tipo = ‘E’ – Equivalencia de Regularidad

Por favor reemplaza eso , borra los datos de la tabla sga_regularidades_venc y volve a correr este script. Igualmente podes correr la consulta que envie anteriormente por si hay alumnos con prorrogas que no estan en actas de cursadas.

Gracias Alejandra:
Si, habia quedado un prorroga vencida y no estaba en el acta. Posiblemente error de migración de sistema anterior o error de carga, posiblemente borraron el acta a mano y no le sacaron la prorroga. Como se ya paso.
Saludos

Ok. Para la proxima version agregaremos pre-controles para poder detectar estos casos de inconsistencia.

pd: Aun no cambié el dni! :slight_smile:

Cierto Alejandro, se me paso la A.
Suerte en el cambio!!!