Erreur de connexion à la base de données Postgresql avec Django

Lorsque je tente de lancer la synchronisation entre Django et ma base de données PostgreSQL, j’obtiens le message d’erreur suivant :self.connection = Database.connect(**conn_params)
psycopg2.OperationalError: 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"?

Contexte :

  • Debian Lenny
  • Django 1.1 installé
  • PostgreSQL 8.3.6, installé à partir des sources

Pourtant PostgreSQL est bien lancé, la base est accessible en utilisant l’utilitaire psql

Eh bien quoi alors ?

Si on y regarde de plus près, il y a bien un fichier .s.PGSQL.5432, mais il est dans /tmp… en faisant:$ mkdir /var/run/postgresql
$ ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/

cela fonctionne !
A noter que le problème ne se pose pas si on installe PostgreSQL à partir du gestionnaire de paquets…

Edit : autre solution :

A priori le problème vient de cette version de la bibliothèque python-psycopg2 (utilisée par Django pour la connexion avec PostgreSQL) qui a en dur le chemin /var/run/postgresql. Une autre solution consiste à spécifier au serveur PostgreSQL le chemin qu’il doit utiliser pour stocker la socket de connexion. Pour ce faire, éditer le fichier postgresql.conf et mettre :

unix_socket_directory = '/var/run/postgresql'

Vus : 288
Publié par Marco : 47