J'utilise postgres.heroku.com pour héberger mes bases de données. Cela signifie que je n'ai aucun moyen de modifier les paramètres du serveur. Par conséquent, la réponse à cette question ne m'aide pas. Heroku n'est pas disposé à modifier leurs paramètres (je les ai contactés).
Je me demande quelle serait la meilleure façon de pirater PgAdmin III pour maintenir la connexion en vie. Je pense à des choses comme la création d'une macro Autohotkey pour automatiser les actions de l'interface utilisateur pendant que PgAdmin est en arrière-plan, ou peut-être utiliser une sorte d'outil réseau pour forcer l'envoi de messages réseau au nom de PgAdmins.
J'ai également reçu une offre de 500 $ pour que quelqu'un change le code de PgAmin III. Le développeur de PgAdmin, ne modifiera pas le code, juste à cause de Heroku.
Que devrais-je faire? PgAdmin est supérieur à bien des égards, il a juste cet inconvénient.
Réponses:
libpq
, la bibliothèque cliente PostgreSQL sous-jacente, a lakeepalives
possibilité d'activer les keepalives TCP .Il semble que PgAdmin-III ne vous permette pas de spécifier directement des paramètres de connexion arbitraires, mais il existe une solution de contournement.
Lorsque vous regardez la configuration de connexion dans PgAdmin-III, vous verrez une option "service". Il s'agit du fichier du service de connexion . Pour l'utiliser, créez un
~/.pg_service.conf
avec un contenu comme:et lors de la connexion à partir de PgAdmin-III, entrez
myherokudb
dans leservice
champ.Cela entraînera PgAdmin-III à utiliser les paramètres de connexion spécifiés dans le fichier de service, y compris l'activation de keepalives.
(Si vous êtes sous Windows, le fichier de service peut se trouver dans un autre emplacement; voir la documentation).
Il n'y a pas de variable d'environnement
libpq
pour contrôler les keepalives, donc vous ne pouvez pas le configurer de cette façon, vous devrez utiliser un fichier de service.L'ajout de la prise en charge de paramètres de connexion supplémentaires à PgAdmin-III, ou une case à cocher dans les options de connexion pour contrôler le paramètre keepalives, devrait être assez trivial. Je me demande si Dave a compris ce que vous demandiez concernant votre offre de financement des travaux.
Mise à jour : le fichier de service est recherché à l'emplacement spécifié dans la
PGSYSCONFDIR
variable d'environnement. S'il n'est pas défini, il correspond par défaut à un emplacement spécifique à la plate-forme, qui ne semble pas être correctement documenté pour Windows. Je vais soumettre un patch de documentation. La documentation de.pgpass
montre son chemin comme%APPDATA%\postgresql\pgpass.conf
si,~/.pg_service.conf
devrait donc être%APPDATA%\postgresql\pg_service.conf
... mais il ne semble pas l'être.En fait, le chemin correct est:
Donc:
J'ai testé sous Windows et constaté que vous ne pouvez pas laisser le
host
champ vide dans PgAdmin-III sous Windows. PgAdmin-III semble remplacer tout hôte spécifié dans le fichier de service par ce qui est spécifié dans la boîte de dialogue de connexion. Vous ne devez donc pas inclure dehost
clé dans le fichier de service. (Je vais signaler un bug).Faire "masquer les extensions de fichier pour les types de fichiers connus" est désactivé dans Windows, donc vous ne l'appelez pas accidentellement à la
.pg_service.conf.txt
place. Si vous ne savez pas s'il est nommé à droite ou non, vérifiez la colonne "Type" dans l'Explorateur Windows en mode liste; il lira "Document texte" s'il est mal nommé.pg_service.conf.txt
etCONF File
s'il est correctement nommé.pg_service.conf
. Si vous avez des problèmes pour le renommer, désactivez «masquer les extensions de fichier pour les types de fichiers connus» ou utilisez un éditeur de texte judicieux comme notepad ++ qui vous permettra de créer des fichiers nommés comme vous le souhaitez.Notez la première période (point) dans le nom de fichier. Oui, c'est différent de
pgpass.conf
, et oui, c'est ennuyeux, à la limite d'un bug.la source
host
le fichier de service vide.