libpq
, la biblioteca de cliente de PostgreSQL subyacente, tiene la keepalives
opción de habilitar TCP keepalives .
Parece que PgAdmin-III no le permite especificar parámetros de conexión arbitrarios directamente, pero hay una solución alternativa.
Cuando observa la configuración de conexión en PgAdmin-III, verá una opción de "servicio". Esto se refiere al archivo del servicio de conexión . Para usarlo, crea un ~/.pg_service.conf
contenido como:
[myherokudb]
user=myusername
keepalives=1
connect_timeout=20
keepalives_idle=10
y cuando se conecte desde PgAdmin-III, ingrese myherokudb
en el service
campo.
Esto hará que PgAdmin-III use los parámetros de conexión especificados en el archivo de servicio, incluida la habilitación de keepalives.
(Si está en Windows, el archivo de servicio puede estar en otra ubicación; consulte la documentación).
No hay una variable de entorno libpq
para controlar keepalives, por lo que no puede configurarlo de esa manera, tendrá que usar un archivo de servicio.
Agregar soporte para parámetros de conexión adicionales a PgAdmin-III, o una casilla de verificación en las opciones de conexión para controlar el parámetro keepalives, debería ser bastante trivial. Me pregunto si Dave entendió lo que estaba pidiendo sobre su oferta para financiar el trabajo.
Actualización : el archivo de servicio se busca en la ubicación especificada en la PGSYSCONFDIR
variable de entorno. Si no está configurado, el valor predeterminado es una ubicación específica de la plataforma, que no parece estar documentada correctamente para Windows. Enviaré un parche de documentación. La documentación de.pgpass
muestra su camino como %APPDATA%\postgresql\pgpass.conf
si así ~/.pg_service.conf
fuera, %APPDATA%\postgresql\pg_service.conf
pero debería ser ... pero no parece serlo.
De hecho, la ruta correcta es:
%APPDATA%\postgresql\.pg_service.conf
Entonces:
- Inicio-> Ejecutar
- `% APPDATA%
- crear el directorio "postgresql" si no existe
- cree el archivo ".pg_service.conf" como un archivo de texto con los contenidos proporcionados anteriormente (vea la nota a continuación sobre el nombre del archivo)
- En PgAdmin-III, ingrese "localhost" en el nombre del Host y el nombre del servicio en el campo de servicio.
Lo probé en Windows y descubrí que no puede dejar el host
campo en PgAdmin-III en blanco en Windows. PgAdmin-III parece anular cualquier host especificado en el archivo de servicio con lo que se especifica en el diálogo de conexión. Por lo tanto, no debe incluir una host
clave en el archivo de servicio. (Informaré un error).
Hacer que "ocultar extensiones de archivo para tipos de archivo conocidos" esté desactivado en Windows, para que no lo llame accidentalmente .pg_service.conf.txt
. Si no está seguro de si se llama correctamente o no, marque la columna "Tipo" en el Explorador de Windows en la vista de lista; leerá "Documento de texto" si se nombra incorrectamente .pg_service.conf.txt
y CONF File
si se nombra correctamente .pg_service.conf
. Si tiene problemas para renombrarlo, desactive "ocultar extensiones de archivo para tipos de archivo conocidos", o use un editor de texto sensible como notepad ++ que le permitirá crear archivos con el nombre que desee.
Tenga en cuenta el punto inicial (punto) en el nombre del archivo. Sí, eso es diferente pgpass.conf
y sí, eso es molesto, rayando en un error.