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

Responder a