[SOLUCIONADO]Error en migración de Módulo: Datos Censales

Buenas, cuando intento migrar el módulo del asunto a una base unificada de G3 con N unidades académicas migradas anteriormente, obtengo el siguiente error:

2019/02/13 19:12:17 - 02_mdp_datos_censales - ERROR: update o delete en «mdp_datos_censales» viola la llave foránea «fk_mdp_eleccion_institucion_mdp_datos_censales» en la tabla «mdp_eleccion_institucion»
2019/02/13 19:12:17 - 02_mdp_datos_censales -   Detail: La llave (dato_censal)=(280) todavía es referida desde la tabla «mdp_eleccion_institucion».

Revisando el script encuentro que en un momento se insertan en una tabla temporaria los registros y luego los borra:

INSERT INTO _temp_dc (persona, dato_censal)
 SELECT mp.persona, dc.dato_censal
   FROM mig._cnv_pk_personas as mp,
        mdp_datos_censales as dc
  WHERE mp.migrar_datos_censales = 1 
    AND mp.existe = 1
    AND dc.persona = mp.persona;

DELETE FROM mdp_datos_economicos  WHERE dato_censal IN (SELECT dato_censal FROM _temp_dc);
DELETE FROM mdp_datos_actividades WHERE dato_censal IN (SELECT dato_censal FROM _temp_dc);
DELETE FROM mdp_datos_personales  WHERE dato_censal IN (SELECT dato_censal FROM _temp_dc);
DELETE FROM mdp_datos_censales    WHERE dato_censal IN (SELECT dato_censal FROM _temp_dc);
DELETE FROM mdp_datos_salud WHERE persona IN (SELECT persona FROM _temp_dc);

¿Está correcto este comportamiento? ¿Como continúo?
Versión 3.15.0 de los scripts
G2 versión 2.9.4

Gracias

Damián:

Si no entiendo mal, lo que estarían haciendo esos delete es borrar los registros que ya están de otra migración, y supongo que sería para volverlos a insertar a partir de los datos de la nueva migración . Obviamente esto es una suposición tratando de entender lo que hace el script. Y pareciera que faltó algún delet y por eso te estaría dando el error. Puede ser?

Saludos

Gustavo

Hola Damian, faltaban dos deletes sobre unas tablas nuevas.
Ya habia sido reportado en este mensaje, y fue arreglado en los scripts de la version 3.16.
Por favor fijate si podes bajar estos scripts y probar con lo ultimo publicado.

Saludos.

Hola Alejandro, gracias por responder.
¿Todo de nuevo el proceso de migración?
¿O solo el paso a partir del módulo de datos censales?

Solo a partir del módulo que te dio error.

Usando los scripts de 3.16.0 emite el siguiente error:

ERROR: no existe la columna «dato_censal»

Creo que la línea del script es:

DELETE FROM mdp_personas_allegados     WHERE dato_censal IN (SELECT dato_censal FROM _temp_dc);

Ya que la tabla no tiene una columna con ese nombre.
Mas adelante emite:

ERROR: no existe la relación «his_personas_allegados»

Ya que no existe en el esquema negocio

En el script

02_fx_pos_ctrl_datos_censales.sql

hay un error de sintaxis, falta la palabra ON en la expresión del vínculo entre mcp y msp

IF c_error = 0 THEN
		
			SELECT count(distinct msp.nro_inscripcion) INTO c_cant 
			FROM  mig._cnv_pk_personas as mcp 
			JOIN mig.sga_datos_censales as msp ON (mcp.unidad_academica = msp.unidad_academica AND  mcp.nro_inscripcion = msp.nro_inscripcion)
			LEFT JOIN mig.aca_usuarios_ag ag ON ag.unidad_academica = msp.unidad_academica AND  ag.nro_inscripcion = msp.nro_inscripcion
			WHERE mcp.migrar = 1 ;
				
			ret := ('Control por persona','OK: Se migraron los registros de datos censales para todas las personas.',c_cant,c_cant)::mig.pos_ctrl_type;
			RETURN NEXT ret;
		END IF;

Gracias Damian por avisar. Ya ajustamos ese script para la próxima version.
Saludos.