libpq
, a biblioteca cliente subjacente do PostgreSQL, possui a opção keepalives
para ativar o TCP keepalives .
Parece que o PgAdmin-III não permite que você especifique parâmetros de conexão arbitrários diretamente, mas há uma solução alternativa.
Quando você olha a configuração de conexão no PgAdmin-III, você verá uma opção de "serviço". Isso se refere ao arquivo do serviço de conexão . Para usá-lo, crie um ~/.pg_service.conf
com conteúdo como:
[myherokudb]
user=myusername
keepalives=1
connect_timeout=20
keepalives_idle=10
e ao conectar-se do PgAdmin-III digite myherokudb
no campo service
.
Isso fará com que o PgAdmin-III use os parâmetros de conexão especificados no arquivo de serviço, incluindo a ativação de keepalives.
(Se você estiver no Windows, o arquivo de serviço pode estar em outro local; consulte a documentação).
Não há nenhuma variável de ambiente em libpq
para controlar os keepalives, então você não pode defini-lo dessa forma, você terá que usar um arquivo de serviço.
Adicionar suporte para parâmetros de conexão adicionais ao PgAdmin-III ou uma caixa de seleção nas opções de conexão para controlar o parâmetro keepalives, deve ser bem trivial. Eu me pergunto se Dave entendeu o que você estava pedindo por sua oferta para financiar o trabalho.
Atualizar : o arquivo de serviço é consultado no local especificado na variável de ambiente PGSYSCONFDIR
. Se não definido, o padrão é um local específico da plataforma, que não parece estar documentado corretamente para o Windows. Vou enviar um patch de documentação. A documentação para .pgpass
mostra seu caminho como %APPDATA%\postgresql\pgpass.conf
, então ~/.pg_service.conf
deve ser %APPDATA%\postgresql\pg_service.conf
... mas não parece ser.
Na verdade, o caminho correto é:
%APPDATA%\postgresql\.pg_service.conf
Então:
- Iniciar- > Executar
- '% APPDATA%
- crie o diretório "postgresql" se ele não existir
- crie o arquivo ".pg_service.conf" como um arquivo de texto com o conteúdo dado acima (veja a nota abaixo da nomenclatura do arquivo)
- No PgAdmin-III, digite "localhost" no nome do host e o nome do serviço no campo de serviço.
Eu testei no Windows e descobri que você não pode deixar o campo host
no PgAdmin-III em branco no Windows. O PgAdmin-III parece sobrescrever qualquer host especificado no arquivo de serviço com o especificado na caixa de diálogo de conexão. Portanto, você não deve incluir uma chave host
no arquivo de serviço. (Eu vou relatar um bug).
Tornar "ocultar extensões de arquivo para tipos de arquivo conhecidos" está desativado no Windows, para que você não o chame acidentalmente de .pg_service.conf.txt
. Se você não tiver certeza se o nome está correto ou não, verifique a coluna "Tipo" no Windows Explorer no modo de exibição de lista; ele lerá "Documento de texto" se for nomeado incorretamente .pg_service.conf.txt
e CONF File
se for nomeado corretamente .pg_service.conf
. Se você tiver problemas para renomeá-lo, desative "ocultar as extensões de arquivo dos tipos de arquivo conhecidos" ou use um editor de texto sensato como o notepad ++ Isso permitirá que você crie arquivos com o nome que quiser.
Observe o período inicial (ponto) no nome do arquivo. Sim, isso é diferente de pgpass.conf
e, sim, isso é irritante, beirando um bug.