Re: ERROR: se ha detectado un deadlock

From: Oswaldo Hernández <listas(at)soft-com(dot)es>
To: Ever Daniel Barreto Rojas <ebarreto(at)nexusit(dot)com(dot)py>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: ERROR: se ha detectado un deadlock
Date: 2008-01-12 19:10:56
Message-ID: 478910C0.2070800@soft-com.es
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Ever Daniel Barreto Rojas escribió:
> hola a todos:
>
> estoy ejecutando una función (que toma bastante tiempo) que
> actualiza un campo de tipo date desde un campo de tipo varchar
>
> para hacer esto, escribí una función pl/pgsql que recorre todos los
> registros que hay que actualizar y los va actualizando de a uno, sin
> embargo, al pasar cierto tiempo, me encuentro con este error:
>
> 2008-01-12 00:47:51 PYST NOTICE: Actualizando persona 5862315 con fecha <NULL> a 19860315
> 2008-01-12 00:47:52 PYST ERROR: se ha detectado un deadlock
> 2008-01-12 00:47:52 PYST DETALLE: El proceso 10575 espera AccessShareLock en relación 20852 de la base de datos 20014; bloqueado por proceso 10632.
> El proceso 10632 espera AccessExclusiveLock en relación 20890 de la base de datos 20014; bloqueado por proceso 10575.
> 2008-01-12 00:47:52 PYST CONTEXTO: sentencia SQL: «UPDATE persona SET per_fnac = '1986-03-15' WHERE idpersona = 5862315»
> PL/pgSQL function "arreglar_fechas_nacimiento" line 11 at execute statement
> 2008-01-12 00:47:52 PYST SENTENCIA: SELECT arreglar_fechas_nacimiento();
>

El error puede venir por hacer los execute sobre la misma tabla que estas recorriendo con el for..loop

> (de paso, habría alguna forma de acelerar este proceso?)
>

no veo ningun motivo para que no hagas directamente el update sin necesidad de funciones, mas o
menos asi:

update perrsona
set per_fnac = quote_literal(temp_fnac::date)
where
not temp_fnac is null
;

Saludos,
--
*****************************************
Oswaldo Hernández
oswaldo (@) soft-com (.) es
*****************************************

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Br@nsh 2008-01-12 23:28:19 sobre transacciones...
Previous Message Ever Daniel Barreto Rojas 2008-01-12 18:39:53 Re: ERROR: se ha detectado un deadlock