Com toda humildade possivel :) Não vejo como, no meu caso que preciso de transações concorrentes (tempo real), abrir e fechar as transações sem um malabarismo excepcional. Por exemplo, meu cadastro de clientes se o usuário abre, não posso abrir pegar X registros e fechar a transação, eu trabalho com componentes DBWare (conexão direta com a tabela), eu tenho um controle manual por assim dizer, quando um registro está em uso e outro tenta abri-lo o sistema não deixa... funciona de boa. O Financeiro tem que ver uma venda que acabou de ser efetivada e dar o aval, se não retorna ao vendedor e por ai vai... é bem dinâmico mesmo, é atendimento ao público (balcão). Esse meu problema não acontece toda hora, é bem exporádico, mas quando acontece me dá esse transtorno. Na minha aplicação enquanto um formulario está aberto tenho que manter a transação aberta senão ele limpa as informações.
Quanto a terminar somente o processo do tal registro eu consigo fazer isso pelo pgadmin mas ele trava o registro mesmo sem a conexão, isso que estou achando estranho. Eu pedi pra todos sairem, vi que não havia mais conexão, só a minha, então tentei alterar o tal registro, mas não foi, ele só liberou depois que restartei o postgres. Só a título de comparação, quando usava o MySQL nesse mesmo conceito que trabalho não ocorria isso, um colega disse aqui na lista que o modo do MySQL trabalhar é diferente, é tipo um espelho, tanto é que posso alterar uma tabela colocando ou inserindo novos campos que ele não grita. No postgres já vi que isso não é possível, mas compreendo que são arquiteturas diferentes. Só preciso compreender melhor o postgres pra lidar com essas situações A ajuda dos colegas aqui tem me ajudado muito, mais uma vez agradeço! Marcelo Silva --------------------------------------- Em 12 de abril de 2013 16:15, Marcone <[email protected]> escreveu: > Em 12 de abril de 2013 15:58, Marcelo da Silva <[email protected]> > escreveu: > > Veja a tela do PGAdmin > > > > http://imagebin.org/253758 > > A imagem tá chei de "<IDLE> in transaction"... cara isso só dá dor de > cabeça como essa que você tá tendo agora. > > > Quando ele trava eu só consigo parar a sessão pelo PGAdmin nesta tela aí, > > mas se eu tentar alterar o registro seja pelo pgadmin ou pela minha > > aplicação ele trava denovo, ou seja, tenho que mandar todo mundo sair do > > sistema, reiniciar o postgres pra ele liberar o tal registro. > > Se você tá com moral de mandar todo mundo sair do sistema no meio do > expediente para reiniciar o banco, é bom você canalizar isso para ser > feita uma alteração urgente nessa aplicação para ela começar a > terminar as transações (commit ou rollback)!! > > > Tenho notado que isso ocorre quando dá uma queda de conexão, mas não > > necessariamente trava um registro, mas quando trava é este transtorno. > > Bem, as maquinas com cabo fisico é tranquilo, não dá problema pois não > cai, > > mas as com wireless sempre me causam isso. > > > > Como liberar o tal registro pra não ter que parar todos, tem um esquema ? > > Um solução sintomática e paliativa seria você terminar o processo do > postgres que está causando o lock com a função pg_terminate_backend[1] > - USE COM EXTREMA CAUTELA para não matar quem não tem culpa! > > > Se desse pra eu fazer algo pela aplicação que travou o registro eu daria > um > > Rollback e beleza, mas ele chega a perder a conexão, aí já era. > > > > To na luta pra achar uma solução amigável... > > > > > > Marcelo Silva > > --------------------------------------- > > > > 1 - http://www.postgresql.org/docs/9.2/static/functions-admin.html > > > -- > Marcone Peres - DBA > http://www.linkedin.com/in/marconeperes > oraculogeo.blogspot.com > @marconeperes > (61) 8146-0028 > _______________________________________________ > pgbr-geral mailing list > [email protected] > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
