On 15-03-2016 12:52, Murilo Habermann Torquato wrote:
> Fala pessoal,
> 
> Para atualizar um banco de dados em produção (usando uma transação)
> precisamos alterar todas as constraints do banco de dados de "DEFERRABLE
> INITIALLY DEFERRED" para "DEFERRABLE INITIALLY IMMEDIATE".
> 
> Para isso, usamos a instrução "ALTER TABLE xxxxxxxxxxx ALTER CONSTRAINT
> ............."
> 
> Após terminar a atualização, voltamos as constraints ao estado original
> (DEFERRABLE INITIALLY DEFERRED), porém o seguinte erro começou a ser
> lançado ao tentar excluir registros:
> 
> /2016-03-15 08:41:33 BRT [15681-1] brerp@brerp ERRO:
>  AfterTriggerSaveEvent() called outside of query/
> /2016-03-15 08:41:33 BRT [15681-2] brerp@brerp CONTEXTO:  comando SQL
> "DELETE FROM ONLY "adempiere"."m_inoutline" WHERE $1
> OPERATOR(pg_catalog.=) "m_inout_id""/
> /
> /

Não entendi o porque vc precisa fazer tudo isso em um deploy de banco,
pois esse ALTER TABLE precisará obter um AccessExclusiveLock na tabela
em questão, ou seja, nenhuma outra sessão conseguirá ler (select) ou
escrever nela (insert/update/delete).

Vc já tentou usar o SET CONSTRAINTS [1] ???

Outro ponto, qual versão exata vc está utilizando (X.Y.Z)?


> Dois pontos estranhos, que não consegui entender se fizemos algo de
> errado, se tenho algum problema de configuração ou (acho muito dificil)
> ser um erro do postgres, já que o ALTER CONSTRAINT é um tanto quanto "novo":
> 
> 1 - se eu faço um DROP em todas as constraints do BD e depois ADD
> novamente o erro desaparece, tudo volta a funcionar normalmente
> 2 - se eu gero um dump do mesmo BD que está apresentando o erro, e
> restauro em um novo BD, (no mesmo servidor) o erro não ocorre, tudo fica
> normal
> 

Esse é o comportamento esperado.

Att,


[1] http://www.postgresql.org/docs/current/static/sql-set-constraints.html

-- 
   Fabrízio de Royes Mello         Timbira - http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a