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'