IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Installation PostgreSQL Discussion :

Emplacement du fichier .s.PGSQL.5432


Sujet :

Installation PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut Emplacement du fichier .s.PGSQL.5432
    Bonjour à tous

    Je travaille sur Debian Lenny que j'ai installée il y a quelques jours from scratch.
    Puis j'y ai compilé et installé PostgreSQL v8.4 depuis les sources téléchargés du site.
    Ensuite je me suis connecté à ma base via psql -h localhost -U postgres sans problème.

    Il y a peu, j'ai voulu me connecter via socket avec simplement psql -U postgres. Et là, j'ai eu le message
    could not connect to server: No such file or directory
    Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
    Après avoir un peu cherché, j'ai trouvé ce fameux fichier socket ".s.PGSQL.5432" dans "/tmp". Et en même temps, je me suis aperçu que mon psql était issu du client 8.3 qui avait été installé depuis les DVD Debian en même temps que pgadmin3. Et donc le client 8.3 situé dans /usr/bin/psql prenait le dessus sur le client /usr/local/postgresql/bin/psql.
    En désintallant tous les clients 8.3, bizarrement je n'ai plus eu de problème. En effet, le client 8.4 compilé utilisait le socket "/tmp/.s.PGSQL.5432". Je me suis donc dit "plus de pb".

    Toutefois ce soir j'ai voulu me connecter à ma bdd depuis python (psycopg2) en mode socket. Et là, le module psycopg2 m'a renvoyé le même message d'erreur.

    J'ai essayé de recompiler psycopg2 (en me disant qu'il avait été construit à partir du client 8.3) sans succès. J'ai aussi recompilé postgres 8.4 sans succès non plus.
    Pour l'instant, ma solution a été de créer un lien symbolique "/var/run/postgresql/.s.PGSQL.5432" vers "/tmp/.s.PGSQL.5432" mais je ne trouve pas ça super génial...

    Donc tout ça pour en venir à ma question: comment on définit l'emplacement du fichier socket ? J'ai cherché partout dans les fichiers de conf du serveur, dans les options du client, etc sans succès.

    Merci
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Par défaut
    Donc tout ça pour en venir à ma question: comment on définit l'emplacement du fichier socket ? J'ai cherché partout dans les fichiers de conf du serveur, dans les options du client, etc sans succès.
    Côté serveur c'est dans le fichier postgresql.conf, l'entrée s'appelle unix_socket_directory

    Côté client, la bibliothèque libpq qui est utilisée par la plupart des applis a un emplacement par défaut qui est "en dur" c.a.d défini à la compilation. Mais si la variable PGHOST existe et contient un chemin, c.a.d commençant par le caractère / (slash), alors son contenu est pris en compte pour la connexion en tant que fichier socket.
    L'autre possibilité est de préciser ce chemin de fichier en host avec l'option qui va bien dans l'appli (par exemple -h dans psql), host qui également doit commençer par un caractère / (slash) , ce qui implique que c'est un fichier socket et non un nom de machine.

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par estofilo Voir le message
    Côté serveur c'est dans le fichier postgresql.conf, l'entrée s'appelle unix_socket_directory
    Arf cette entrée je l'ai ratée mais j'irai voir

    Citation Envoyé par estofilo Voir le message
    Côté client, la bibliothèque libpq qui est utilisée par la plupart des applis a un emplacement par défaut qui est "en dur" c.a.d défini à la compilation. Mais si la variable PGHOST existe et contient un chemin, c.a.d commençant par le caractère / (slash), alors son contenu est pris en compte pour la connexion en tant que fichier socket.
    L'autre possibilité est de préciser ce chemin de fichier en host avec l'option qui va bien dans l'appli (par exemple -h dans psql), host qui également doit commençer par un caractère / (slash) , ce qui implique que c'est un fichier socket et non un nom de machine.
    Joli !!! Merci de ces infos, c'était exactement ce qu'il me faut.
    J'irai quand-même voir si je ne peux pas bidouiller la libpq ce qui m'évitera une config fastidieuse...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer le titre d'un emplacement de fichier
    Par decour dans le forum Access
    Réponses: 2
    Dernier message: 04/10/2006, 10h48
  2. Réponses: 5
    Dernier message: 15/09/2006, 14h26
  3. [EasyPHP] Emplacement du fichier php.ini
    Par baleiney dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 31/08/2006, 09h54
  4. Réponses: 14
    Dernier message: 24/08/2006, 13h53
  5. Réponses: 13
    Dernier message: 16/03/2005, 11h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo