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
