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
