Pessoal,
o que significa o erro abaixo e o que fazer para evita-lo ?
PGRES_FATAL_ERROR - ERROR: deadlock detected
DETAIL: Process 16306 waits for ShareLock on transaction 110599693
blocked by process 16294.
Process 16294 waits for ShareLock on transaction 110599686 blocked by
process 16306.
SQL Statement: Update ... PL/pgSQL function
Significa que duas transações concorrentes bloquearam linhas de forma
cruzada, e não é possível desfazer o bloqueio porque uma transação
espera pela outra e vice-versa. Quando isso ocorre, o PostgreSQL cancela
uma das transações aleatoriamente, de forma que a outra consegue terminar.
Para evitar isso, verifique as operações feitas por uma e outra
transação. Normalmente isso ocorre em UPDATE sobre uma tabela cuja chave
estrangeira relaciona uma tabela utilizada pela segunda, e a segunda faz
o mesmo em relação à primeira. Às vezes isso pode ser evitado
redesenhando as relações entre as tabelas, mas muitas vezes é a forma
como sua aplicação trabalha que precisa ser repensada.
Se o erro não ocorre com frequência, ou se ocorreu pela primeira vez
depois de muito tempo, talvez não valha a pena fazer nada.
Enfim, cada caso é um caso, a analisar.
Ambiente:
PostgreSQL 9.1.4
Você está 10 versões atrasado.
Centos 6.3
yum upgrade nessa turma toda rapaz!
[]s
Flavio Gurgel
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral