Olá, Álvaro

Quando o parâmetro tiver setado para ON, ele ignora os erros e continua a
sua transação sem abortar (rollback) o processo. Isso funciona em uma sessão
interativa (psql). Interativo neste caso refere-se a sessão e não um valor
para o parâmetro. Quando a execução ocorre a partir de um arquivo isso não
acontece e o erro não é ignorado (acontece rollback) como ocorre na sessão.

Espero ter ajudado.

[]s



2008/5/29 Álvaro Guimarães <[EMAIL PROTECTED]>:

> Relendo a man page...
>
> ON_ERROR_ROLLBACK
>>               When on, if a statement in  a  transaction  block
>> generates  an
>>               error,  the error is ignored and the transaction continues.
>> When
>>               interactive, such errors are only ignored  in  interactive
>> ses-
>>               sions,  and  not  when  reading  script  files.
>
> Quando setado como "ON", quando uma declaração num bloco de transação gerar
> um erro, o erro vai ser ignorado e a transação vai continuar. Quando setado
> como "interactive" os erros só serão ignorados numa sessão interativa, e não
> lendo scripts.
>
> Ou seja, o tal do ON_ERROR_ROLLBACK era pra funcionar dando um \i dentro do
> psql.
> Não sei o que fazer. :(
>
>
>
> 2008/5/29 jota. comm <[EMAIL PROTECTED]>:
>
>> Olá,
>>
>> Por padrão os backups são gerados com copy, a menos que você informe o
>> parâmetro -d para usar insert.
>> Até onde sei não tem como fazer com o que o copy não aborte a transação
>> inteira.
>>
>>
>> []s
>>
>> 2008/5/29 Álvaro Guimarães <[EMAIL PROTECTED]>:
>>
>>> Meu backup é gerado com pg_dump -Fc que no manual ta falando que é uma
>>> forma comprimida de backup. Então no caso o -Fc tá gerando backups com COPY.
>>> Seria isso né?
>>> E será que tem como fazer com que o COPY não aborte a transação inteira?
>>>
>>>
>>> 2008/5/29 jota. comm <[EMAIL PROTECTED]>:
>>>
>>>> Olá, Álvaro
>>>>
>>>> Uma sessão interativa é uma sessão psql, por exemplo:
>>>>
>>>> Se eu digitar: psql meu_banco eu abro uma sessão interativa para o banco
>>>> meu_banco.
>>>>
>>>> O seu backup é feito com o comando copy? Se for feito com o copy e um
>>>> erro for gerado ele aborta toda a transação, e isso implica que a sua 
>>>> tabela
>>>> não sera carregada.
>>>>
>>>> Espero ter ajudado.
>>>>
>>>> []s
>>>>
>>>> 2008/5/29 Álvaro Guimarães <[EMAIL PROTECTED]>:
>>>>
>>>> Meu problema em usar o pg_restore é o mesmo.
>>>>> Não quero rollback caso retorne erros e pelo que li ele não usa as
>>>>> variáveis do psql.
>>>>> Desculpe minha ignorancia. O que exatamente seria uma sessão
>>>>> interativa?
>>>>> Meu problema é que eu perco os dados de uma tabela inteira no backup
>>>>> porquê se uma instrução gerar um erro o postgresql da rollback nela. O
>>>>> script continua rodando depois disso então o ON_ERROR_STOP não é a solução
>>>>> do meu problema.
>>>>>
>>>>> Muito obrigado pelas respostas imediatas.
>>>>>
>>>>>
>>>>> 2008/5/29 jota. comm <[EMAIL PROTECTED]>:
>>>>>
>>>>>> Olá, Álvaro e Émerson
>>>>>>
>>>>>> Corrigindo a minha resposta:
>>>>>>
>>>>>> Segundo a documentação:
>>>>>> ON_ERROR_ROLLBACK
>>>>>>
>>>>>> When on, if a statement in a transaction block generates an error,
>>>>>> the error is ignored and the transaction continues. When interactive,
>>>>>> such errors are only ignored in interactive sessions, and not when 
>>>>>> reading
>>>>>> script files. When off (the default), a statement in a transaction
>>>>>> block that generates an error aborts the entire transaction. The
>>>>>> on_error_rollback-on mode works by issuing an implicit SAVEPOINT for
>>>>>> you, just before each command that is in a transaction block, and rolls 
>>>>>> back
>>>>>> to the savepoint on error.
>>>>>> Isto significa que os erros são apenas ignorados com ON_ERROR_ROLLBACK
>>>>>> ON em sessões interativas e não quando são lidas de um arquivo de script.
>>>>>>
>>>>>> Neste caso você pode tentar usar o ON_ERROR_STOP, mas como comentei no
>>>>>> e-mail anterior nunca usei com em bloco de transação com BEGIN e COMMIT 
>>>>>> em
>>>>>> um arquivo de script, então precisaria ser testado.
>>>>>>
>>>>>> Espero ter ajudado.
>>>>>>
>>>>>> []s
>>>>>>
>>>>>> 2008/5/29 jota. comm <[EMAIL PROTECTED]>:
>>>>>>
>>>>>> Olá,
>>>>>>>
>>>>>>> Para recuperar backup binário você precisa usar o pg_restore, com o
>>>>>>> comando psql não é possível.
>>>>>>>
>>>>>>> Nunca usei este parâmetro, existe um parâmetro chamado ON_ERROR_STOP
>>>>>>> que você pode habilitar ON ou OFF, quando ON se um comando gerar um 
>>>>>>> erro ele
>>>>>>> aborta o processo, caso OFF ele executará todo o procedimento ignorando 
>>>>>>> os
>>>>>>> erros. Nunca usei com transação então não sei se funcionará, acredito 
>>>>>>> que
>>>>>>> deve ser melhor usar o ON_ERROR_ROLLBACK.
>>>>>>>
>>>>>>> E quanto ao parâmetro ON_ERROR_ROLLBACK para continuar uma transação
>>>>>>> quando um erro é gerado deve estar setado como ON, conforme a 
>>>>>>> documentação:
>>>>>>> http://www.postgresql.org/docs/current/static/app-psql.html
>>>>>>>
>>>>>>> Espero ter ajudado.
>>>>>>>
>>>>>>> []s
>>>>>>>
>>>>>>> 2008/5/29 Emerson Casas Salvador <[EMAIL PROTECTED]>:
>>>>>>>
>>>>>>>>  Álvaro Guimarães escreveu:
>>>>>>>>
>>>>>>>> Olá lista.
>>>>>>>>
>>>>>>>> Preciso restaurar um backup que está gerando alguns erros. Porém eu
>>>>>>>> preciso que esses erros sejam ignorados e que o rollback *não* seja
>>>>>>>> executado.
>>>>>>>> Estou tentando o seguinte dentro do utilitário psql:
>>>>>>>>
>>>>>>>> banco=# \set ON_ERROR_ROLLBACK on
>>>>>>>> banco=# \i backup.sql
>>>>>>>>
>>>>>>>> Porém o rollback é executado quando erros são encontrados.
>>>>>>>> Versão do postgresql é a *O Sistema Anti-Vírus detectou tentativa
>>>>>>>> de fraude de "8.1.9." * 8.1.9. <http://8.1.9.>
>>>>>>>> Sistema Operacional é o Fedora Core 6.
>>>>>>>>
>>>>>>>> Segundo o man psql isso era pra funcionar.
>>>>>>>>
>>>>>>>> ON_ERROR_ROLLBACK
>>>>>>>>>               When on, if a statement in  a  transaction  block
>>>>>>>>> generates  an
>>>>>>>>>               error,  the error is ignored and the transaction
>>>>>>>>> continues.
>>>>>>>>>
>>>>>>>>
>>>>>>>> Outra dúvida aproveitando a mesma mensagem.
>>>>>>>> Há a possibilidade de restaurar backups binários pelo utilitário
>>>>>>>> psql?
>>>>>>>>
>>>>>>>> Agradeço desde já.
>>>>>>>>
>>>>>>>> --
>>>>>>>> Álvaro Guimarães
>>>>>>>> Santa Bárbara D'Oeste - SP - Brazil
>>>>>>>>
>>>>>>>> Pois é... mas ali vc ta dizendo
>>>>>>>> banco=# \set ON_ERROR_ROLLBACK *on
>>>>>>>> *
>>>>>>>> não seria:
>>>>>>>> banco=# \set ON_ERROR_ROLLBACK *off *
>>>>>>>> ?
>>>>>>>>
>>>>>>>> nunca usei isso, mas testa aí...
>>>>>>>>
>>>>>>>> -------------------------------------------------------------------------------------
>>>>>>>>
>>>>>>>> Esta mensagem foi verificada pelo sistema de Anti-virus da SJB
>>>>>>>> Solados.
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> pgbr-geral mailing list
>>>>>>>> [email protected]
>>>>>>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> João Paulo
>>>>>>> www.dextra.com.br/postgres
>>>>>>> PostgreSQL
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> João Paulo
>>>>>> www.dextra.com.br/postgres
>>>>>> PostgreSQL
>>>>>>
>>>>>> _______________________________________________
>>>>>> pgbr-geral mailing list
>>>>>> [email protected]
>>>>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Álvaro Guimarães
>>>>> Depto. de T.I.
>>>>> Microwork Softwares
>>>>> _______________________________________________
>>>>> pgbr-geral mailing list
>>>>> [email protected]
>>>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> João Paulo
>>>> www.dextra.com.br/postgres
>>>> PostgreSQL
>>>>
>>>> _______________________________________________
>>>> pgbr-geral mailing list
>>>> [email protected]
>>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>>
>>>>
>>>
>>>
>>> --
>>> Álvaro Guimarães
>>> Depto. de T.I.
>>> Microwork Softwares
>>>
>>> _______________________________________________
>>> pgbr-geral mailing list
>>> [email protected]
>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>
>>>
>>
>>
>> --
>> João Paulo
>> www.dextra.com.br/postgres
>> PostgreSQL
>>
>> _______________________________________________
>> pgbr-geral mailing list
>> [email protected]
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>
>
> --
> Álvaro Guimarães
> Depto. de T.I.
> Microwork Softwares
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>


-- 
João Paulo
www.dextra.com.br/postgres
PostgreSQL
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a