RE: [pgsql-es-ayuda] Fallo de segmentación

From: "Jorge Romeo" <jromeo(at)samca(dot)com>
To: postgres ayuda sql español <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: [pgsql-es-ayuda] Fallo de segmentación
Date: 2009-09-04 08:39:39
Message-ID: 3BFE4B54139F264587EF9BC8EB40185C064E368A@samca-nt-12.samca.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola,
me contesto a mi mismo. He estado investigando y resulta que el conector Python-postgres psycopg2 tiene problemas con aplicaciones multihilo. La solución es actualizar a una versión más moderna (yo tenía la 2.0.8 y he descargado la 2.0.10).

Lo que pasa es que en el fichero de instalación de psycopg2 2.0.10 pone que esta versión, aunque funcionará con multihilo, tendrá fugas de memoria a no ser que se compile libpq5 con la opción --with-thread-safety. He estado buscando en google los fuentes de libpq5, ya que para Ubuntu vienen sólo los binarios, pero no los encuentro. ¿Alguien sabe dónde los puedo encontrar?

Un saludo,
Jorge

-----Mensaje original-----
De: Jorge Romeo
Enviado el: jueves, 03 de septiembre de 2009 16:47
Para: Jorge Romeo
Asunto: RE: [pgsql-es-ayuda] Fallo de segmentación

Sólo quería añadir que me acaba de volver a salir... Esta vez en español!!!

16:40:11-> Fallo la consulta: WARNING: no hay una transacción en curE =3->error de sintaxis en o cerca de <<WARNING>>
WARNING: no hay una transacción en curE =3

Espero me puedan ayudar...
Saludos,
Jorge Romeo

-----Mensaje original-----
De: Jorge Romeo
Enviado el: jueves, 03 de septiembre de 2009 16:38
Para: postgres ayuda sql español
Asunto: [pgsql-es-ayuda] Fallo de segmentación

Hola expertos,

a ver si logro explicarme bien porque estoy metido en un lío bastante molesto...

Estoy trabajando en una aplicación de recogida de datos de proceso trabajando con Python y con postgres 8.3 como base, usando para conectarme psycopg2.

El programa está terminado y funciona bien, pero de vez en cuando aborta, dando como única explicación "Fallo de Segmentación". Esto es extremadamente raro en Python, ya que es un lenguaje interpretado...

Bien, el caso es que por casualidad, he pillado una excepción en mi módulo de base de datos, que hace sospechar que postgres podría estar implicado. El mensaje de error es el siguiente:

15:55:41-> Fallo la consulta: WARNING: there is no transaction inCANTE=2->error de sintaxis en o cerca de <WARNING>

que viene del fragmento en Python:

except Exception as msg:
if not "TRAMAS_RECIENTES" in query :
sys.stderr.write(time.asctime()[11:19] + "-> Fallo la consulta: " \
+ query + "->" + str(msg) )
self.reconexion()
return []

Lo que ha pasado aquí es que la query que he pasado a la función se ha machacado con la "fusión" de un mensaje de advertencia de postgres (WARNING: there is no transaction in) y una consulta antigua (query = "DELETE FROM ORDENES WHERE ID_REPLICANTE=2"), que sólo hago al arranque del programa para limpiar órdenes residuales.

No quiero preguntar por qué Python aborta, sino simplemente si alguien sabe cuando postgres lanza ese mensaje de advertencia para tener alguna pista de por qué puede estar pasándome esto.

También me gustaría saber si alguien tiene experiencia con psycopg2 y le ha pasado algo así, y si hay alternativas para conectar desde Python, ya que no me fío mucho del psycopg2 despues de ver esto.



Gracias de antemano
Jorge Romeo

--
TIP 1: para suscribirte y desuscribirte, visita http://archives.postgresql.org/pgsql-es-ayuda

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2009-09-04 14:03:14 Re: RE: [pgsql-es-ayuda] Fallo de segmentación
Previous Message Jaime Casanova 2009-09-04 07:15:05 Re: herramienta de desarrollo