[SOLUCIONADO] Prueba de sincronizacion Araí-Diaguita

Hola, estoy realizando pruebas de sincronización entre SIU-Diaguita y SIU-Araí.

Configuré en el bases.ini (Diaguita) la entrada de la db de SIU-Araí y corrí el comando arai_sinc_inicial con el siguiente resultado:

=============================== Actualizaci�n de secuencias =============================== Secuencia sq_anx_personas en base Diaguita esquema Diaguita actualizada correctamente! Secuencia sq_anx_domicilios en base Diaguita esquema Diaguita actualizada correctamente! Secuencias en base Diaguita esquema catalogos: Actualizadas las secuencias! Secuencias en base Arai esquema catalogos: Actualizadas las secuencias! Secuencias en base Arai esquema sincronizador: Actualizadas las secuencias!

========================================================
Iniciando la sincronizacion inicial / resincronizacion

[###-------------------------------------] 9%

  • Ha ocurrido un error:
    ERROR ejecutando SQL:
    [CODIGO]: 7
    [SQLSTATE]: db_42601
    [MENSAJE]: ERROR: syntax error at or near “)”
    LINE 1: …VALUES (‘xxx’,‘999’,null,null,null,null,null,null,) – toba_…
    ^
    [SQL EJECUTADA]: INSERT INTO catalogos.mdp_domicilios (calle,numero,piso,departamento,unidad,fax,telefono,codigo_postal,localidad) VALUES (‘xxx’,‘999’,null,null,null,null,null,null,) – toba_log: 445205

=============================
Iniciando la sincronizacion

[########################################] 100%

  • Registros actualizados de la actividad local pendiente :… 1.184

  • Memoria utilizada :… 25.277.928
    ============================================================
    Iniciando el procesamiento de la actividad local pendiente
    ============================================================

  • Registros actualizados de la actividad local pendiente :… 0

  • Memoria utilizada :… 25.277.928

Pregunta, ¿el error no es fatal? La sincronización parece haber realizado algunos cambios a ámbas db…

Por otro lado, que consideraciones hay que tener en cuenta para sincronizar un sistema fuente u otro (Pilaga, Diaguita). ¿Orden? Eso se ve una vez esté realizada exitosamente la sincronización inicial? El instructivo que está en el repositorio ¿es el único al respecto o existe alguna wiki con info adicional/actualizada?

Por último, el instalador web de SIU-Araí no permite trabajar con PostgreSQL 9.4.x (presente en Debian Linux 8 estable). ¿No estaría soportada esta versión?

Gracias y saludos!

Hola Sergio,

Como estás?

El orden de la sincronización solo define que dato prevalece en el servidor.
Ejemplo: Si primero sincronizás Pilaga con Arai, y luego Diaguita tiene al mismo proveedor, al sincronizar con Arai Catálogos van a prevalecer los datos del proveedor que tenía Pilagá. En general la lógica indica que los datos ante un mismo proveedor deben ser los mismos, pero si esto no sucede se aplica la regla mencionada anteriormente.

Respecto a la captura, la primera parte de la sincronización inicial falló, el resto de los pasos se ejecutó correctamente, hay que revisar el registro mencionado en el error, es probable que haya alguna FK o algo similar en ese dato que no pueda ser almacenado en el servidor.
Esa revisión se debe hacer manualmente, corregirla, y luego volver a ejecutar el comando de sincronización inicial.

Si te sirve de ayuda, enviame tus bases Diaguita y Arai para ayudarte a ver cual es el problema y corregirlo.

El instructivo es el que está en el repositorio.

Tendría que funcionar perfectamente con postgresql 9.4.x, hay que actualizar el instalador para que pase la validación, si querés podes modificarlo en el archivo de configuración de tu instalador.

Saludos
Leo

Hola Leo, gracias por responder

Estoy haciendo esta revisión y chequeando encuentro:

  • algunos cientos de registros de diaguita.anx_domicilios que tienen la particularidad de no tener valor en los campos localidad y/o codigo_postal. Este fué el causal de los errores…
  • en SIU-Araí mug_domicilios columna localidad es requerida y en SIU-Diaguita no. ¿A tener en cuenta?
  • también tuve que insertar un rubro nuevo (id 86) en catalogos.sau_pr_rubros ya que no existe.

Avanzando, ahora se presenta este error, pero de actualización en la DB de SIU-Diaguita continuando con la sincro inicial:

ERROR ejecutando SQL: [CODIGO]: 7 [SQLSTATE]: db_23505 [MENSAJE]: ERROR: duplicate key value violates unique constraint "anx_personas_domicilios_pkey" [SQL EJECUTADA]: UPDATE diaguita.anx_personas_domicilios SET rol='PAGO ' WHERE domicilio=287 AND persona=317 -- toba_log: 452448

A modo torpe, lancé la sincronización inicial repetidas veces hasta que este error dejó de aparecer y terminó el proceso con aparente éxito. Pero me llama la antención entonces que sigan existiendo registros en diaguita.anx_personas con la columna persona_arai vacío. Concluyo que efectivamente algo no estuvo bien :stuck_out_tongue:

Seguiré probando…

Si, buena observación, sin bien el dato localidad debería ser requerido y hasta ahora no habíamos visto bases sin datos cargados en ese campo, la base permite nulos, asi que es un tema a revisar (ya que ese campo es parte de una FK también).

Bien, suelen surgir algunas diferencias en datos de tablas maestras que involucran al proveedor entre diaguita/pilaga/arai, por el momento estas diferencias se deben resolver tal cual lo hiciste. Ya estamos trabajando en una nueva versión del sincronizador que complemente esta versión realizada para proveedores y la idea es que contenga a todas las tablas maestras.

En todas las idas y vueltas quizás quedó algo colgado.
Te sugiero limpiar la base arai y un reseteo de los valores en la base diaguita y arrancar la sincronización de cero.
Te paso los scripts que yo uso para hacer eso.


/* Borrar datos prueba Arai*/
set search_path to catalogos;
SELECT * from catalogos.mdp_personas_domicilios;
delete from catalogos.mdp_personas_domicilios;
delete from catalogos.mdp_personas_x_documentos;
delete from catalogos.sau_pr_proveedor_rubro;
delete from catalogos.sau_rt_conceptos_proveedor;

delete from catalogos.sau_pr_proveedores;
delete from catalogos.mdp_personas;
delete from catalogos.mdp_domicilios;

set search_path to sincronizador;
delete from sincronizador.operacion_x_tabla;
delete from sincronizador.logs_errores;
delete from sincronizador.log_cambios;
delete from sincronizador.logs_sincronizacion;

/* Borrar linkeo diaguita con Arai */
set search_path to diaguita;
update diaguita.anx_personas set persona_arai = null;
update diaguita.anx_domicilios set domicilio_arai = null;

delete from catalogos.sincronizacion;
delete from catalogos.logs_sincronizacion;
/* --------------------------------   */

Saludos
Leo

Seguiré probando…
[/quote]

Gracias por los scrips de limpieza, hasta ahora lo estaba realizando “restaurando” las db de mis entornos de prueba. Ahora más simple :smiley:

Por otro lado, el error no volvió a aparecer si lo limpio con dichos scripts, pero si aparece cuando arranco con las db desde cero. Algo habrá. Por el momento de todas formas parece haber quedado operativo, ya probé modificar proveedores desde Diaguita y corroborar que los sincronice al catálogo central. Me queda trabajar desde el sentido Pilagá.

Otra consulta, ¿existen ABM centralizados del proveedor? O la idea es contar con los propios de cada sistema fuente…

Gracias nuevamente.

Excelente, desde Pilagá la metodología debería ser la misma.
Puede suceder que te falte algún dato de alguna tabla maestra, en dicho caso tendrás que agregarlo/s en las bases diaguita y arai, o en pilagá (según sea el caso).

Respecto a tener ABMs centralizados es algo que aún seguimos discutiendo, por el momento se adaptaron los ABMs de los sistemas para que se conecten a arai catalogos.

Cualquier otra consulta avisame.

Buenos días,

Comento que he finalizado la sincronización inicial de SIU-Diaguita y SIU-Pilagá mediante SIU-Araí. Adjunto los cambios SQL que tuve que realizar a las tres bases, por si sirve de referencia.

En el caso de SIU-Diaguita, iniciando desde cero la sincronización con base limpia, siempre salta el error de actualización sobre diaguita.anx_personas_domicilios

En SIU-Araí, no entendí si hay que agregar al cron del sistema las entradas para que se mantenga sincronziado los cambios cada 10 minutos. Por otro lado, las operaciones del menú Sincronizador arrojan:

El ID de autorización no tiene el privilegio para poder realizar la operación especificada en el objeto identificado.

En SIU-Pilagá, no encontré el menú equivalente de sincronización existente en SIU-Diaguita…

Por lo demás, puedo comentar que hasta ahora las pruebas realizadas han sido exitosas para mantener sincronizado proveedores entre sistemas, con caída de SIU-Araí de por medio, cambios mientras estaba offline, reconexión y sincronización de datos… so far so good :smiley:

Saludos!


ajustes.zip (3.23 KB)

Gracias por compartir los scripts y las pruebas que hiciste.
Cada vez que se ingresa al ABM de Proveedores, tanto en diaguita como en pilaga, se fuerza una sincronización.
De todas formas es conveniente crear un CRON para que se ejecute una sincronización cada x minutos (10 o 15 creo estaría bien, pero queda a criterio del administrador), ya que existen otras operaciones que usan datos de proveedores y es importante que muestren esa información actualizada.
Si mal no recuerdo en el instructivo explica como crear el CRON en cada sistema.

Voy a revisar lo del error que comentabas en el menú de SIU Arai Catalogos, aunque en principio no sería recomendado realizar la sincronización desde allí, está solo como acceso directo para eventualmente sincronizar sin recurrir a la línea de comandos.

Se cierran todos los temas que tiene como título [SOLUCIONADO]