Tentei fazer um backup de um banco de dados do ambiente Git Bash, mas o executável não gera nada.
Se eu especificar o nome do arquivo usando o -f
sinalizador, um arquivo em branco é criado, então o executável obviamente é executado, mas não faz nada - não há saída ou atividade. Usar o -v
sinalizador também não o faz produzir nenhuma saída.
Se eu executar pg_dump --help
, recebo saída.
Quando faço o mesmo em uma linha de comando do Windows, é solicitada uma senha e o despejo prossegue bem.
O que há de diferente no ambiente Git Bash que pg_dump
não funciona lá? Existe alguma solução alternativa? Prefiro ficar fora da linha de comando do Windows, se possível.
Suspeito que no ambiente Git Bash ele também esteja aguardando a senha, mas você não está vendo o prompt para ela (o stdout/stderr que está solicitando pode ser redirecionado para outro lugar que não seja o seu terminal?).
Tente digitar a senha como se tivesse sido solicitado e veja o que acontece. Além disso, tente fornecer a senha por outros meios ( conforme abordado aqui ). Em ambos os casos, esta provavelmente não é uma
pg_dump
pergunta específica, mas um bash/bashgit/windows/outro afetando outras ferramentas que precisam de entrada semelhante, sobre as quais você provavelmente obterá respostas úteis em outros lugares.TLDR: Em vez de
pg_dump ...
, usewinpty pg_dump ...
O que é diferente no Git Bash é que é um programa POSIX rodando em uma
mintty
janela que (a menos que você tenha ativado um determinado recurso opcional e ainda não pronto para produção) não suporta a API do Terminal do Windows. A falha é mais frequentemente vista com programas que tentam usar essa API para ler uma senha sem que ela seja impressa conforme o usuário a digita.Sua versão do
pg_dump
provavelmente é compilada para usar a API do Terminal do Windows para que possa ler uma senha sem ecoá-la. (Se ele foi compilado com a API POSIX, a tentativa de não exibir a senha falharia quando executado no Windows Terminal.) Se você executá-lo em ummintty
comwinpty
você provavelmente verá o prompt de senha e poderá digitar a senha.winpty
é um shim que inicia uma janela oculta do console do Windows, executa o programa que você fornece conectado a ele para E/S e, em seguida, pesquisa a tela desse console para obter a saída para enviar de volta ao seu terminal MinGW.